【问题标题】:Node.js - Firebase Functions Database onCreate not triggeringNode.js - Firebase 函数数据库 onCreate 未触发
【发布时间】:2018-08-03 19:03:42
【问题描述】:

我试图在我的实时数据库的更新/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');
        })

    }

});

【问题讨论】:

  • 请编辑问题以准确说明您正在做什么应该触发函数执行。

标签: javascript node.js firebase firebase-realtime-database google-cloud-functions


【解决方案1】:

刚刚发现发生了什么。我正在寻找更新/GmB71KB6lXbYOfGLKNkUgIdiLb42 目录中发布的更新,因此我需要指定一个通配符来捕获节点本身。而不是:

exports.kairosDatabaseTrigger = functions.database.ref('/updates/GmB71KB6lXbYOfGLKNkUgIdiLb42/').onCreate((snapshot) => {

应该是:

exports.kairosDatabaseTrigger = functions.database.ref('/updates/GmB71KB6lXbYOfGLKNkUgIdiLb42/{updateID}').onCreate((snapshot) => {

【讨论】:

    猜你喜欢
    • 2017-12-13
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 2018-08-06
    相关资源
    最近更新 更多