我正在Firebase上编写一个Web应用程序,并具有以下Firestore模式和数据结构:
printf '%s\n' '/^bbb bbb bbb$/r file1.txt' w | ed -s file2.txt
我正在考虑在云功能下面编写代码:
-Cloud函数A:收听“用户”集合中一个文档的更新,并使用先前的userinfo更新“帖子”集合中的每个文档。
-Cloud函数B:允许更新“帖子”集合中的一个文档,并更新包含先前postinfo的“保存”集合中的每个文档。
这里的复杂之处在于,云函数A一旦被触发,将更新“帖子”集合中的多个文档,每个文档都将再次被触发。如果用户写了100个帖子,则一次可以有100个触发器。
要处理这种情况,对我来说,以下自然是下一步?问,因为答案取决于Firebase Cloud Functions如何处理这种情况,但目前我对此还不了解:
a)将函数B编写为事务,因为Firebase Cloud Function将通过按一定顺序对每个触发器进行排队来处理这种情况。
b)编写函数B仍可监听更新并将其反映到“保存的”集合中,但不作为事务处理以避免由数据库锁定引起的大量积压。
c)重新考虑数据库结构和/或云功能逻辑,从一开始就避免这种情况。
答案可能是对还是错(或者在这种情况下有答案吗?),但只是想在实际编写代码之前获得一些指导。有什么建议吗?在此先多谢!