有没有办法设置源自多个firestore集合的firestore触发器,只触发一个云(javascript)函数



因此,通常,在基本级别上,您经常看到firestore集合触发的函数写为:

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

话虽如此,我运行的部署有点不同,尽管结构相同。

  • 我有一个exports.main=(content,event(,其中:
    • 事件保存event信息:
    • 事件ID(e.x:66e9e123-d3fg-1234-123a-1234f110b71b-0(
    • eventType(e.x:providers/cloud.firestore/eventTypes/document.create(
    • 不支持(e.x:{}(
    • params(e.x:{eventId:1CB89AD0-5AS0-1233-SD70-E3B7DS52D23D}(
    • resource(e.x:projects/its the project id/databases/(默认(/documents/TheCollection/1CB89AD0-5AS0-1233-SD70-E3B7DS52D23D
    • 时间戳(e.x:2021-05-19T20:24.131151Z(
  • 内容就是数据

我通过Terraform部署函数,其中我定义:

  • 事件触发器:
    • event_type=providers/cloud.firestore/eventTypes/document.create
    • resource=${TheCollection}/{eventId}

所以,正如你所看到的,虽然我做这件事的方式肯定需要更多的配置,但它非常相同,只是以更具GCP能力的方式配置(如果你愿意的话(

因此,在这种情况下:

  1. 是否有任何可能的方法可以有多个集合/文档触发器,只触发一个云函数?
    • 假设我有集合x和集合y,我希望它们都能触发相同的云函数
  2. 如果有办法的话,请随时以Firebase经常编写的方式编写,我可以尝试将其翻译为可在Firestore中部署

是的,您可以使用多个通配符:

exports.myFunction = functions.firestore
.document('{collectionId}/{docId}')
.onWrite((change, context) => {
console.log(context.params.collectionId);
console.log(context.params.docId);
});

点击此处了解更多信息。

相关内容

  • 没有找到相关文章

最新更新