如何使用firestore在node.js中获取Google云功能执行事件

时间:2018-06-12 06:16:22

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

enter code here以下是google云功能,部署正常并且运行正常 函数的路径 - functions / index.js

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

exports.createUser = functions.firestore
.document('users/{userId}')
.onCreate((snap, context) => {
    const newValue = snap.data();
    console.log(newValue);
});

如何在node.js应用程序中成功调用时访问此函数的事件   

之类的东西
const myFunctions = require("./functions/index");

myFunctions.createUser().then((data) => {
    console.log(data)
})
.catch((err) => {
    console.log(err);
})

截至目前为止低于错误 enter image description here

2 个答案:

答案 0 :(得分:1)

您的createUser云功能是由Firestore onCreate()事件类型触发的,因此在第一次写入文档时会触发"",根据{{ 3}}

该文档还添加了以下内容:

  

在典型的生命周期中,Cloud Firestore功能执行以下操作:

     
      
  1. 等待更改特定文档。 (在这种情况下,首次编写文档时)

  2.   
  3. 事件发生时触发并执行其任务

  4.   
  5. 接收包含存储在指定文档中的数据快照的数据对象。

  6.   

因此,如果您想从"外部世界"触发此云功能,例如从node.js应用程序,您需要在相应位置创建一个新的Firestore文档,即在users集合下。为此,您将使用Node.js Server SDK,请参阅documentation

请注意,您还可以通过使用相应的客户端SDK创建新的user文档,从客户端应用程序(Web,Android,iOS)触发它。

根据您的评论进行更新:

你不能直接" port"并将为Cloud Functions编写的代码运行到Node.js应用程序。您将不得不为Node.js重新开发解决方案。

在您的情况下,您应该使用Node.js Server SDK(在我的评论中提到),您可以使用CollectionReference的onSnapshot方法。见https://cloud.google.com/nodejs/docs/reference/firestore/0.14.x/

答案 1 :(得分:0)

我会尽力回答你的问题,但有点不清楚。你问:

  

如何获取Google云功能执行事件

嗯,事件已经开始,当功能触发并且你的代码正在运行时,即你的行const newValue = snap.data()

也许你正在寻找一种方法来执行某些任务,当触发器运行时?你只需从函数内部执行此操作,然后返回一个promise。例如,如果您要运行多个异步任务,则可以使用Promise.all([])。