【问题标题】:Can we trigger firebase cloud functions when we create a collection (not "document")?我们可以在创建集合(而不是“文档”)时触发 firebase 云功能吗?
【发布时间】:2020-02-04 06:10:04
【问题描述】:

我试图实现这样一种场景,即 firebase 仅在创建集合时触发一次,而不是在每次将文档添加到集合时触发。假设我希望它仅针对添加到集合中的第一个文档触发,而不是针对添加到同一集合中的所有其他文档触发。怎么可能呢?请帮忙!!!

【问题讨论】:

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


    【解决方案1】:

    Cloud Functions 没有这样的触发器。您的触发器路径必须只指定一个文档,或者使用通配符来指定可能匹配多个文档的路径。

    如果您想知道一个集合包含它的第一个文档,您必须:

    1. 维护该集合中的文档计数(可能在另一个集合中的另一个文档中),并在该值从 0 变为 1 时触发该值的更改。
    2. 查询集合中刚刚创建文档的所有文档,以确定它是否是第一个。

    这两者都需要大量的额外代码 - 对任意集合正确实现非常不容易。他们也可能在重负载下遇到问题。如果这些选项对您不起作用,我建议您想出另一种方法让您在正确的时间触发。

    【讨论】:

    • 感谢您的建议,但我想减少函数的负载,以便在创建第一个文档后它们不会触发。看起来试图实现这一点会导致比目前情况更多的负载。因此,我认为我会保持原样。
    【解决方案2】:

    虽然不能直接做。您可以检查集合是否包含任何元素,如果存在则表示它存在。

    const result =await firestore.collection("collection").limit(1).get()
    if(result.size){
      // Collection exists
    }
    

    【讨论】:

      猜你喜欢
      • 2019-09-09
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 2020-10-25
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 2019-11-18
      相关资源
      最近更新 更多