0

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

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

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 块)还是等到上传尝试结束并向文档添加/上传一个附加标志,并且仅在具有此标志的情况下将数据视为将来有效?还有什么?

** 意识到这与一些要避免的问题很接近,但在这种情况下,我专门询问 Firestore API(例如,firestore()API 中专门用于处理这些情况的任何函数/对象)和最佳实践(如果任何在更广阔的世界(使用 Firebase / Firestore 的新手))。

4

1 回答 1

1

您应该使用 Firestore事务来确保所有文档都已自动更新。这将确保所有文档都被更新,或者一个都不更新。

从参考文档:

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

于 2018-09-18T06:57:11.083 回答