如果Firestore操作失败,则Admin SDK的行为如何?

时间:2019-04-17 22:35:27

标签: node.js firebase google-cloud-firestore google-cloud-functions

我正在将Firebase Admin SDK与Cloud Functions一起使用。该函数对多个Firestore集合进行多次写入,这需要保持一致。

现在,我不确定如果诸如写入文档之类的有效操作失败(也许是通过宇宙辐射或类似的不太可能发生的事情)时,Firestore操作的表现如何。

操作是否立即返回错误,或者是否存在某种重试或错误纠正机制?

也许这是一个愚蠢的问题,与SDK本身无关。

2 个答案:

答案 0 :(得分:1)

首先,如果要编写多个文档,所有文档必须同时原子地写入,则应使用batch or transaction来实现此目的。如果任何文档由于任何原因而无法写入,那么对于所引用的任何文档都不会发生任何事情。相反,如果您选择执行多个写入操作,则必须弄清楚要可靠地分别回滚每个更改,这将是很多工作。

如果您确实遇到错误,我不认为该错误的条件有任何保证。除非您能够确定错误不是暂时的,否则您可能希望自己重试。为了使重试更可靠,您可以在函数上enable the retry configuration,允许错误转义该函数(不要捕获该错误),然后让Cloud Functions为您再次调用它。

答案 1 :(得分:1)

它将引发错误。如果您注意到每种方法的使用都有一个成功或错误的回调。

如果在节点上使用诸如await之类的内容,则应尝试/捕获

如果您有多个操作并且该过程应该是原子操作和/或全部或不执行任何操作,则请分批使用

https://firebase.google.com/docs/firestore/manage-data/transactions

如果遇到错误(如果无法解决错误),则函数崩溃,则可以修改函数的重试

https://firebase.google.com/docs/functions/retries