【发布时间】:2020-07-26 20:28:58
【问题描述】:
我正在设置一个函数来根据文档中的属性删除多个 Firestore 文档。它确实有效,但是当它执行时,它可能会尝试两次删除同一个文档(添加了控制台日志语句进行验证)。方法如下:
async deleteDocuments<T>(collectionName: string, fieldToCheck: string, stringValueToCheck: string) {
// Get a collection based on the field being checked and then set a property for document ID to 'id'
this._afs.collection(collectionName)
.ref.where(fieldToCheck, '==', stringValueToCheck)
.onSnapshot(async x => {
if (x) {
x.forEach(async doc => {
try {
console.log(`deleting: ${collectionName}/${doc.id}`)
await doc.ref.delete();
} catch (error) {
console.log(error)
}
})
}
})
}
虽然它不会在所有文档上重复尝试,这确实令人困惑。例如,我有三个文档,当我运行它时,它迭代了两个文档两次,一个文档一次。我在另一组包含十几个左右的文档上进行了尝试,看起来它具有相同的结果(尽管我对 1:3 的比例并不肯定)。
【问题讨论】:
-
我建议您编辑您的问题,以显示它始终如您所愿运行的情况的具体细节。您的帖子中应该有足够的信息,以便任何人都可以复制它。如果您说它是随机发生的,那么这实际上并没有足够有用的信息来处理。
标签: angular google-cloud-firestore angularfire