想知道标准/最佳实践方法是什么(如果有的话)用于处理将失败/部分数据上载到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来说还很陌生)。
答案 0 :(得分:1)
您应该使用Firestore transaction来确保所有文档都已自动更新。这样可以确保所有文档都被更新,或者不更新。
从引用的文档中获取:
Cloud Firestore支持用于读取和写入数据的原子操作。在一组原子操作中,要么所有操作都成功,要么不应用任何操作。