fire.firestore().collection('Customer').get()
.then(data=>{
data.docs.forEach(doc=>{
let db = fire.firestore().collection(`Customer`)
db.where("updated", ">=", 0).limit(100).onSnapshot(async doc=>{
try {
await doc.docs.map(each=>{
setDatas([...datas, {...each.data()}])
})
}
})
})
我正在尝试将对象附加到数组中以从Firestore查询。 但是,以某种方式,它仅读取最后一个文档。 如果您可以不使用数组来存储状态,请帮助我。
答案 0 :(得分:0)
检查您的代码并运行此data作为示例我可以注意到您的代码正在获得所有结果,而不仅仅是最后一个,因此可能还有其他结果。同样,这似乎是一个不必要的双重查询。
相反,您可以使用.. where("updated", ">=", 0).limit(100) ..
而不是查询内部的查询来查询所有想要获取的文档。
您可以使用here中的示例代码来简化一些事情:
const admin = require('firebase-admin');
admin.initializeApp();
let db = admin.firestore();
const citiesRef = db.collection('Customer');
const snapshot = await citiesRef.where('updated', '>=', 100).limit(100).get();
if (snapshot.empty) {
console.log('No matching documents.');
return;
}
snapshot.forEach(doc => {
//Your code here to add to your array
});
此代码适用于NodeJS
,但您可以将其修改为ReactJS