Firestore快照只读最后一个文档

时间:2020-06-26 22:42:22

标签: reactjs google-cloud-firestore

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查询。 但是,以某种方式,它仅读取最后一个文档。 如果您可以不使用数组来存储状态,请帮助我。

1 个答案:

答案 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