如何在云函数触发器中重用通配符参数?

时间:2019-01-03 18:05:42

标签: firebase google-cloud-platform google-cloud-firestore google-cloud-functions

如何在云函数触发器中重用相同的通配符参数?

例如,我只想在‘/rootCollection/{docID}/{docID}/{doc}’上触发。如果仅在子集合中创建与父文档({docID}同名的子集合中的文档,我只希望函数触发。

如果在文档{docID}的其他子集合中创建文档,我不希望触发。

所以我可以尝试使用:

functions.firestore.document(‘/rootCollection/{docID}/{docID}/{doc}’)

但这会在部署时产生错误。

例如,如果我将通配符名称更改为{docIDCollection},那么它将起作用:

exports.exampleFunction = functions.firestore.document(‘/rootCollection/{docID}/{docIDCollection}/{doc}’)
.onCreate(async (snapshot, context) => {

但是,当在文档{docID}的任何子集合中创建任何文档时,该函数都会触发。即使子集合与父文档的名称不同。我不要这个。

如何使第三个参数与第二个通配符相同,以便函数仅触发ID为{docID}的子集合?

有人帮忙吗?

1 个答案:

答案 0 :(得分:1)

无法验证您在Cloud Functions路径中要执行的操作。路径中的每个参数名称都必须是唯一的。

您将不得不让de function在更多的写操作上触发,然后通过比较命名参数来忽略代码中不同子集合上的操作。

exports.exampleFunction = functions.firestore.document(‘/rootCollection/{docID}/{docIDCollection}/{doc}’)
.onCreate(async (snapshot, context) => {
  if (context.params.docID == context.params.doc) {
    ...