因此,通常,在基本级别上,您经常看到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能力的方式配置(如果你愿意的话(
因此,在这种情况下:
- 是否有任何可能的方法可以有多个集合/文档触发器,只触发一个云函数?
- 假设我有集合x和集合y,我希望它们都能触发相同的云函数
- 如果有办法的话,请随时以Firebase经常编写的方式编写,我可以尝试将其翻译为可在Firestore中部署
是的,您可以使用多个通配符:
exports.myFunction = functions.firestore
.document('{collectionId}/{docId}')
.onWrite((change, context) => {
console.log(context.params.collectionId);
console.log(context.params.docId);
});
点击此处了解更多信息。