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

如何使用firestore在node.js中获取Google云函数执行事件,node.js,firebase,firebase-realtime-database,google-cloud-firestore,google-cloud-functions,Node.js,Firebase,Firebase Realtime Database,Google Cloud Firestore,Google Cloud Functions,下面是谷歌云功能,部署正确,运行良好 函数路径-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

下面是谷歌云功能,部署正确,运行良好 函数路径-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);
})
到目前为止,错误如下
我会尽力回答你的问题,但有点不清楚。你问:

如何获取Google云函数执行事件

那么,当函数触发并且代码正在运行时,事件就开始了,即行const newValue=snap.data

当触发器运行时,您可能正在寻找执行某些任务的方法?您只需从函数内部执行此操作,并返回一个承诺。例如,如果要运行多个异步任务,则可以使用Promise.all[].

您的createUser Cloud函数由Firestore onCreate事件类型触发,因此将在首次编写文档时触发,如所示

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

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

等待对特定文档的更改。在这种情况下,第一次编写文档时

当事件发生并执行其任务时触发

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

因此,如果您想从外部触发此云功能,例如从node.js应用程序触发此功能,则需要在相应位置(即用户集合下)创建一个新的Firestore文档。为此,您将使用Node.js服务器SDK,请参见

注意,您还可以通过使用相应的客户端SDK创建新的用户文档,从客户端应用程序web、android和iOS触发它

更新以下评论:

您不能直接将为云函数编写的代码移植并运行到Node.js应用程序。您必须重新开发Node.js的解决方案


在您的情况下,您应该使用我的评论中提到的Node.js服务器SDK,并且可以使用CollectionReference的onSnapshot方法。请参见

我想在我的节点应用程序中侦听这些事件,但createUser是从移动应用程序调用的,那么解决方法是什么?我想在我的节点应用程序中侦听这些事件,但createUser是从移动应用程序调用的,那么节点中的代码应该是什么?你说createUser是从移动应用程序调用的确切意思是什么?根据您的代码,createUser是一个在后端由Firestore onCreate事件类型触发的云函数。那么如何从移动应用程序调用它呢?你能说得更准确些吗。当我从移动应用程序向users/{userId}添加记录时,会触发下面的事件,所以我想在node-toexports.createUser=functions.firestore.document'users/{userId}中收听这个事件。如何实现这一点?@YogeshwarTanwar好的,我明白了!我已经更新了我的答案,希望能对你有所帮助。很高兴我能帮助你。如果你认为答案是有价值的,你可以考虑对其进行投票。谢谢