javascript - Cloud Functions 和 Firestore:使用 Promise.all() 跟踪多个文档修改
问题描述
我使用可调用的 Cloud 函数来创建新用户。对于此用户,会在 Cloud Firestore 中创建多个文档。
我不想只存储部分数据,如果一个承诺(文档创建失败),但完全撤消注册,所以我使用Promise.all(documentCreationPromisses)
所以我的问题是,尽管我使用 Promise.all() ,是否仍有可能创建某些文档而其他文档没有?
解决方案
Promise.all()
返回一个 Promise,告诉您是否所有其他 Promise 都成功了,或者其中任何一个 Promise 失败了。它当然可以通过部分成功来解决,如果有失败,您必须检查每个单独的承诺以找出哪些成功或失败。
如果您在 Firestore 中修改一堆文档,并且您要求所有修改都完全成功,否则什么也不会发生(完全回滚),那么您应该使用批量写入或事务。对于批量写入和事务,一切都必须成功,否则整个批次都会失败。从该批次返回的单个承诺将告诉您发生了什么。
推荐阅读
- javascript - Vuefire onAuthStateChanged 返回用户,然后在刷新时返回 null
- haskell - 倾斜二项式堆能否支持高效合并?
- ios - CIImage 裁剪并渲染到 CVPixelBuffer
- react-native - 将 componentWillReceiveProps 重命名为 componentDidUpdate
- javascript - 用高阶组件包装递归组件
- c++ - g ++详尽的内存使用情况编译自动生成的代码
- r - 在 R 中编写阈值函数
- c# - 在命名空间“System.Data.SqlClient”中找不到类型名称“SqlConnection”
- influxdb-2 - InfluxDB 2.0.2 的配置文件路径在哪里?
- php - Github WebHooks 获取分支详细信息