在Firestore中上传部分数据的标准做法错误处理?

时间:2018-09-18 06:45:24

标签: google-cloud-firestore

想知道标准/最佳实践方法是什么(如果有的话)用于处理将失败/部分数据上载到Firestore DB的问题。

例如,假设用户需要通过类似的方式上传到两个不同的收藏夹

let res = undefined
let docID = firebase.auth().currentUser.uid
try {
    res = await firebase.firestore().collection('someCollection')
        .doc(docID)
        .set(someData)
} catch (error) { console.error(`Some message ${res}`) }

try {
    res = await firebase.firestore().collection('someOtherCollection')
        .doc(docID)
        .set(someOtherData)
} catch (error) { console.error(`Some message ${res}`) }

,无论出于何种原因,程序都会成功地写入someCollection,但不会成功地写入someOtherCollection。应该如何处理?我们是应该尝试回滚(通过catch块)写入了 的内容,还是等到上传尝试结束并 add / upload 向文档添加一个附加标志,并且仅如果有此标志,将来将数据视为有效吗?还有吗?

**意识到这已经接近一些Questions to Avoid Asking,但是在这种情况下,我特别要求Firestore API(例如firestore() API中专门用于处理这些问题的任何函数/对象)案例)和最佳做法(如果在更广阔的世界中存在 (对于使用Firebase / Firestore来说还很陌生)。

1 个答案:

答案 0 :(得分:1)

您应该使用Firestore transaction来确保所有文档都已自动更新。这样可以确保所有文档都被更新,或者不更新。

从引用的文档中获取:

  

Cloud Firestore支持用于读取和写入数据的原子操作。在一组原子操作中,要么所有操作都成功,要么不应用任何操作。