【发布时间】:2020-12-24 13:51:01
【问题描述】:
我使用可调用的 Cloud 函数来创建新用户。对于此用户,会在 Cloud Firestore 中创建多个文档。
我不想只存储部分数据,如果一个承诺(文档创建失败),但完全撤消注册,所以我使用Promise.all(documentCreationPromisses)
所以我的问题是,尽管我使用 Promise.all() 是否仍有可能创建某些文档而其他文档不创建?
【问题讨论】:
-
是的,因为您仍然可以一次创建所有这些。如果其中一个操作失败,
Promise.all将返回一个被拒绝的承诺,但这不会改变所有操作都被执行(成功与否)的事实。最好改用allSettled,然后你会检查它们是否都成功 - 如果没有,你会去删除成功上传的文档,以撤消部分上传。 (在失败的Promise.all上这样做是不够的,因为您可能会在其他一些文档完成上传之前收到错误。)
标签: javascript firebase google-cloud-firestore promise google-cloud-functions