如何检索集合中的所有文档并查看Firebase Firestore中是否存在文档?

时间:2020-06-23 18:30:29

标签: javascript node.js firebase google-cloud-firestore

架构: This is how my schema looks

当前实施:

    for (let i=0; i<data.length; i++) {
            try
            {
                
                var ifPresent = db.collection("Safes-Hardware").doc(data[i]['Mac address Check']);
                ifPresent.get()
                .then(async (doc)=>{

                            if (!doc.exists) 
                            {
                                // Do stuff
                            }
                            else
                            {
                                //Do stuff
                            }
                            return { message: "Success is within the palm of our hands." } 
                        }

            }

问题: 即使这段代码可以完成工作,但我仍要对数组中的每个数据进行查找,这会导致套接字挂起。(有时) 因此,我想一次性获取该集合中的所有文档,将其存储在本地,并查找本地是否存在文档,而不是每次都查询数据库。

问题: 我该如何实现?

1 个答案:

答案 0 :(得分:1)

您可以只使用collection("Safes-Hardware").get().then(),就可以在本地保存数据。

let collection = []
db.collection("Safes-Hardware").get().then(function(querySnapshot) {
    collection = querySnapshot.map((doc) => ({
            id: doc.id,
            ...doc.data()
          }))
});

然后您可以使用收藏集搜索所需内容,也许是这样

data.forEach( doc => {
   let x = collection.find(v => v.id === doc['Mac address Check'])
   if(x){
    //it exists
   }else{
     // not exists
   }
})

但是请注意,客户端使用o(n ^ 2)操作会损害带宽或请求数量