我正在将Firebase Admin SDK与Cloud Functions一起使用。该函数对多个Firestore集合进行多次写入,这需要保持一致。
现在,我不确定如果诸如写入文档之类的有效操作失败(也许是通过宇宙辐射或类似的不太可能发生的事情)时,Firestore操作的表现如何。
操作是否立即返回错误,或者是否存在某种重试或错误纠正机制?
也许这是一个愚蠢的问题,与SDK本身无关。
答案 0 :(得分:1)
首先,如果要编写多个文档,所有文档必须同时原子地写入,则应使用batch or transaction来实现此目的。如果任何文档由于任何原因而无法写入,那么对于所引用的任何文档都不会发生任何事情。相反,如果您选择执行多个写入操作,则必须弄清楚要可靠地分别回滚每个更改,这将是很多工作。
如果您确实遇到错误,我不认为该错误的条件有任何保证。除非您能够确定错误不是暂时的,否则您可能希望自己重试。为了使重试更可靠,您可以在函数上enable the retry configuration,允许错误转义该函数(不要捕获该错误),然后让Cloud Functions为您再次调用它。
答案 1 :(得分:1)
它将引发错误。如果您注意到每种方法的使用都有一个成功或错误的回调。
如果在节点上使用诸如await之类的内容,则应尝试/捕获
如果您有多个操作并且该过程应该是原子操作和/或全部或不执行任何操作,则请分批使用
https://firebase.google.com/docs/firestore/manage-data/transactions
如果遇到错误(如果无法解决错误),则函数崩溃,则可以修改函数的重试