有谁知道如何在Fi还原事务中实现多个gets呢?
我有一个不知道长度的Firestore引用数组,保存在Firestore中。每个引用包含{count: number},我只想在每个引用中添加一个。要做到这一点,我很有信心我需要使用事务,而文档说我可以使用多个gets,但我不知道如何实现它。
我认为我需要获取每个引用,将现有的计数存储在数组中,在每个数组中添加一个,然后将它们全部保存回Firestore。每次我尝试实现这一点,我都失败了。我需要了解的可能只是在一个Firestore事务中使用多个get的例子,但是在文档中,或者在我所能找到的在线任何地方,都不存在。
发布于 2018-01-07 18:48:26
您必须使用Promise.all,因为您需要迭代arrayOfReferences的每个防火墙引用。
我为您做了一个示例并对其进行了测试,只需遵循以下代码:
setCount(arrayOfReferences){
return this.db.runTransaction(t => {
return Promise.all(arrayOfReferences.map(async (element) => {
const doc = await t.get(element);
const new_count = doc.data().count + 1;
await t.update(element, { count: new_count });
}));
});
}要了解更多关于计数器如何在Firestore中工作的信息,可以阅读文档。
发布于 2018-04-16 20:37:36
Firestore没有这样说,但是答案隐藏在API引用中:https://cloud.google.com/nodejs/docs/reference/firestore/0.13.x/Transaction?authuser=0#getAll
您可以使用Transaction.getAll()而不是Transaction.get()来获取多个文档。
https://stackoverflow.com/questions/47949573
复制相似问题