Firestore更改未触发

时间:2019-02-13 20:32:45

标签: firebase google-cloud-firestore google-cloud-functions

我觉得我至少应该看到一个错误,或者..如果没有异常的幸运,那就成功了。我在/sampleData/metrics/{uid}/{document}上有一个活动设置,您可以在这里看到它:

dashboard - functions

请注意,触发器包含前导/。在我的第一个 deploy 上,代码中也没有指定它。我进行了更改,当我第一次测试没有看到调用时,但是 console.firebase.google.com 中的文本没有更改...但是,随后的部署看起来确实完整:

=== Deploying to 'THIS PROJECT'...

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
✔  functions: all necessary APIs are enabled
i  functions: preparing . directory for uploading...
i  functions: packaged . (172.19 KB) for uploading
✔  functions: . folder uploaded successfully
i  functions: updating Node.js 8 function onAddLocation(us-central1)...
i  functions: updating Node.js 8 function onAddMetric(us-central1)...
✔  functions[onAddLocation(us-central1)]: Successful update operation. 
✔  functions[onAddMetric(us-central1)]: Successful update operation. 

✔  Deploy complete!

Please note that it can take up to 30 seconds for your updated functions to propagate.
Project Console: https://console.firebase.google.com/project/THIS PROJECT/overview
✨  Done in 51.23s.

我们还可以看到我的示例应用程序正在其中添加数据:

dashboard - database

但是当我添加数据时,我看不到我的函数被触发。功能->使用情况标签上的计数甚至在几分钟后仍为0:

dashboard - functions - usage

我的功能在节点8中,并使用 async / await ,但package.json和firebase.json均指定

"engines": {
  "node": "8"
},

注释:

添加了“用法”标签的屏幕截图,以显示console.log可能什么也没说。

1 个答案:

答案 0 :(得分:3)

由于“功能”仪表板显示触发器“ ref.write”,这意味着在写入实时数据库而不是 Cloud Firestore 时将触发Cloud Function。它们是Firebase提供的两种不同的数据库服务。

您必须按照以下文档调整代码:https://firebase.google.com/docs/functions/firestore-events?authuser=0

例如:

exports.firestoreTrigger = functions.firestore
  .document('/sampleData/metrics/{uid}/{document}')
  .onCreate((snapshot, context) => {
    const msgData = snapshot.data();
    console.log(msgData);
    return null;
  });