组织多个firebase触发器



我有多个firebase触发器组织如下:

Function1.ts:

exports.fileupload = db.collection("/x").onSnapshot(async (snap) => {
snap.docChanges().forEach((change) => {//something}) 
});

Function2.ts:

exports.something = db.collection("/y").onSnapshot(async (snap) => {
snap.docChanges().forEach((change) => {//something})
}); 

然后在index.ts中:

const ai = require("./Function1");
const users = require("./Function2");
exports.fileupload = ai.fileupload ;
exports.something = users.something;

这会导致Function1.ts函数在添加新文档时触发多次。如果我不从index导出它们。然后它只触发一次,然后任何firebase验证函数都不会触发。有更好的方法来组织吗?

我知道触发器可以为同一事件触发多次,但我也找不到此处指定的onSnapshot的eventId

是什么原因造成的?

我在代码中根本没有看到任何数据库触发器。您定义了两个快照查询监听器,但它们不是触发器,正如您在文档中看到的那样。如果你有一个Firestore触发器,它看起来像这样:

const functions = require('firebase-functions');
exports.myFunction = functions.firestore
.document('my-collection/{docId}')
.onWrite((change, context) => { /* ... */ });

如果您在代码的顶层定义快照侦听器,它们将为分配的每个服务器实例只执行一次运行任何其他实际发生的触发。可以根据应用于函数的负载分配任意数量的服务器实例。

因为我们看不到任何实际定义触发器的代码,所以我们不能完全理解这里发生了什么。但是可以肯定地说,长时间运行的快照侦听器不适合Cloud Functions代码,因为它本质上是无状态的。如果您想在触发器中查询数据库,您应该使用get()而不是侦听器。

相关内容

  • 没有找到相关文章

最新更新