我试图在我的实时数据库的更新/GmB71KB6lXbYOfGLKNkUgIdiLb42 目录中创建一个孩子时触发我的 Firebase 函数,但它没有触发。
当我将它放入 Cloud Storage 触发器时,它可以工作并且我的打印结果显示在日志中,但是当我将它放回 onCreate 触发器时,它又停止了工作。任何指针将不胜感激。
编辑:后续问题——如果我需要将触发器从实时数据库触发器更改为云存储触发器,那么前 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');
})
}
});