我可以从与Flutter中的多个文档Firestore Transaction匹配的查询中读取吗



我试图从查询中读取,而不是从事务中的单个文档中读取
我的写入取决于集合中当前数据的结果。但我似乎明白,至少对于移动和web客户端来说,不允许从查询中读取,只允许从单个文档读取。

如果是这样的话,既然我不知道我想提前阅读什么文件,我该如何实现这一点?

具体来说,我指的是Firebase团队在9点38分发布的这段视频

实际上,您不能从事务内部的查询中读取文档,只能读取单个文档。

因此,您必须根据自己的条件运行查询以确定文档ID,然后使用单独的更新来更新文档,或者使用一个或多个批处理写入而不是事务来更新文档(如果您需要这些写入是原子写入(。

这里有一个片段代表了我的意思(在Javascript中,不是Flutter,但对于一个实际的例子来说已经足够了(:

var db = firebase.firestore();
const newDocumentBody = {
message: 'hello world'
}
db.collection('myCollection').where('message', '==', 'hello').get().then(response => {
let batch = db.batch();
response.docs.forEach((doc) => {
const docRef = db.collection('myCollection').doc(doc.id);
batch.update(docRef, newDocumentBody);
})
batch.commit().then(() => {
console.log('updated all documents inside myCollection');
})
})

相关内容

最新更新