Firebase云函数:如何处理由另一个云函数引起的多个触发器?

Firebase云函数:如何处理由另一个云函数引起的多个触发器?,firebase,google-cloud-firestore,google-cloud-functions,Firebase,Google Cloud Firestore,Google Cloud Functions,我正在Firebase上编写一个web应用程序,具有以下Firestore架构和数据结构: db.collection('users').doc{{userid}) // Each doc stores data under 'userinfo' index, which is an object(map). db.collection('posts').doc({postid}) // Each doc contains 'userinfo', which is the data ab

我正在Firebase上编写一个web应用程序,具有以下Firestore架构和数据结构:

  db.collection('users').doc{{userid}) // Each doc stores data under 'userinfo' index, which is an object(map).
  db.collection('posts').doc({postid}) // Each doc contains 'userinfo', which is the data about the person who posted.
  db.collection('saved').doc({userid}) // Each doc stores data under 'saved' index, which is an array of carbon copy of a document in 'posts' collection.
我正在考虑编写以下云函数:

-云功能A:监听“用户”集合中一个文档中的更新,并使用以前的用户信息更新“帖子”集合中的每个文档

-云功能B:Lisen更新“posts”集合中的一个文档,并更新“saved”集合中包含以前postinfo的每个文档

这里的复杂之处在于,云函数A一旦触发,将更新“posts”集合中的多个文档,每个文档都将再次成为触发器。如果用户写了100篇文章,那么一次可以有100个触发器

为了处理这种情况,以下哪一项是我下一步的自然选择?提问是因为答案取决于Firebase云函数如何处理这种情况,但我目前对此不太了解:

a) 将函数B作为事务写入,因为Firebase云函数将通过按某种顺序对每个触发器排队来处理这种情况

b) 编写函数b,以便仍然侦听更新并将其反映到“已保存”集合,但不作为事务,以避免数据库锁定导致的大量积压

c) 重新考虑数据库结构和/或云功能逻辑,从一开始就避免这种情况


答案可能是对的,也可能是错的(或者在这种情况下有答案吗?),但在实际编写代码之前,我只是想获得一些指导。有什么建议吗?提前多谢

我有一个类似的问题。你能找到什么吗?我有一个类似的问题。你找到什么了吗?