我正在尝试在我的实时数据库的updates / GmB71KB6lXbYOfGLKNkUgIdiLb42目录中创建子项时触发我的Firebase功能,但它没有触发 .
当我把它放入 Cloud 存储触发器时,它工作,我的打印出现在日志中,但当我把它放回onCreate触发器时,它再次停止工作 . 任何指针都将非常感激 .
编辑:后续问题 - 如果我需要将触发器从实时数据库触发器更改为 Cloud 存储触发器,则是前1-2行(functions.database.ref(...) . onCreate - > functions . storage.object() . onFinalize)我需要修改的所有内容?
编辑2:进一步调查,我发现如果我将触发类型更改为onDelete,onWrite或onUpdate,触发器将触发 . 当我试图通过使用context.eventType找出onWrite的事件类型时,它会一直以未定义的形式返回 .
exports.kairosDatabaseTrigger = functions.database.ref('/updates/GmB71KB6lXbYOfGLKNkUgIdiLb42/')
.onCreate((snapshot) => {
console.log("Starting kairos trigger")
const content = snapshot.val;
const photos = content.photoUrls;
for(i = 0; i < photos.length; i++) {
const tempPath = path.join(os.tmpdir(), path.basename(url));
downloadIMG(photos[i], tempPath);
base64str = base64_encode(tempPath);
var options = {
method: 'POST',
uri: 'https://api.kairos.com/recognize',
body: {
'image': base64str,
'gallery_name': 'gallerytest1'
},
headers: {
'app_id': 'xxxxxx',
'app_key': 'xxxxxxxxx'
},
json: true
}
request(options)
.then(function(repos) {
console.log('API call succeeded');
console.log(repos)
})
.catch(function (err) {
// API call failed...
console.log('API call failed');
})
}
});
1 回答
刚发现发生了什么事 . 我正在寻找更新/ GmB71KB6lXbYOfGLKNkUgIdiLb42目录中发布的更新,因此我需要指定一个通配符来捕获节点本身 . 代替:
它应该是: