首页 > 解决方案 > Cloud Functions 和 Firestore:使用 Promise.all() 跟踪多个文档修改

问题描述

我使用可调用的 Cloud 函数来创建新用户。对于此用户,会在 Cloud Firestore 中创建多个文档。

我不想只存储部分数据,如果一个承诺(文档创建失败),但完全撤消注册,所以我使用Promise.all(documentCreationPromisses)

所以我的问题是,尽管我使用 Promise.all() ,是否仍有可能创建某些文档而其他文档没有?

标签: javascriptfirebasegoogle-cloud-firestorepromisegoogle-cloud-functions

解决方案


Promise.all()返回一个 Promise,告诉您是否所有其他 Promise 都成功了,或者其中任何一个 Promise 失败了。它当然可以通过部分成功来解决,如果有失败,您必须检查每个单独的承诺以找出哪些成功或失败。

如果您在 Firestore 中修改一堆文档,并且您要求所有修改都完全成功,否则什么也不会发生(完全回滚),那么您应该使用批量写入或事务。对于批量写入和事务,一切都必须成功,否则整个批次都会失败。从该批次返回的单个承诺将告诉您发生了什么。


推荐阅读