架构: 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." }
}
}
问题: 即使这段代码可以完成工作,但我仍要对数组中的每个数据进行查找,这会导致套接字挂起。(有时) 因此,我想一次性获取该集合中的所有文档,将其存储在本地,并查找本地是否存在文档,而不是每次都查询数据库。
问题: 我该如何实现?
答案 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)操作会损害带宽或请求数量