Firebase云功能.onWrite始终记录null或undefined

时间:2018-05-06 14:33:29

标签: firebase firebase-realtime-database google-cloud-platform google-cloud-functions

我不知道为什么这不会向控制台记录除“null”或“undefined”之外的任何内容。我正在通过Google Cloud Platform测试浏览器界面对此进行测试。我也尝试使用相同的结果记录EVENT(而不是CHANGE和CONTEXT)。我也试过打开安全规则,但这也没有帮助。任何建议都非常感谢。

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.fanOutLink = functions.database.ref('/userLink/BLAH584H5BLAH30BLA/link').onWrite((change, context) => {
  console.log('value is:'+change.before.val());
});

这是我用来测试上面代码的JSON:

{
"userLink": {
      "BLAH584H5BLAH30BLA": {
        "link": "https://blabla.com"
      }
    }
}

1 个答案:

答案 0 :(得分:1)

云功能必须始终返回承诺(或者如果您不能,则至少返回一个值)。

您的函数应该按原样运行,但在日志中有延迟和错误,例如"函数返回未定义,预期的Promise或值"。运行函数的Cloud Functions实例可能会在函数在日志中成功写入消息之前关闭。

如果您按照以下方式更改代码,您将获得(准)即时回复:

exports.fanOutLink = functions.database.ref('/userLink/BLAH584H5BLAH30BLA/link').onWrite((change, context) => {
    console.log('value is:'+change.before.val());
    return true;
});

我建议您查看Firebase小组的这2个视频:https://www.youtube.com/watch?v=7IkUgCLr5oA&t=511shttps://www.youtube.com/watch?v=652XeeKNHSk&t=37s

按照我们的"讨论"在下面的评论中,您似乎使用了新的Cloud Functions语法,但使用的是旧版本的库。在重新部署之前,请查看此文档项:https://firebase.google.com/docs/functions/beta-v1-diff并按指示执行:

  

在functions文件夹中运行以下命令:

     

npm install firebase-functions@latest --save

     

npm installfirebase-admin@5.11.0 --save