Javascript Firestore onSnapshot为每个可能比较当前文档的文件';s值为;“下一步”;文件';s值多少?
当我在Firestore中执行返回多个文档的查询时,我使用forEach以推荐的方式循环遍历它们,如下所示:Javascript Firestore onSnapshot为每个可能比较当前文档的文件';s值为;“下一步”;文件';s值多少?,javascript,google-cloud-firestore,Javascript,Google Cloud Firestore,当我在Firestore中执行返回多个文档的查询时,我使用forEach以推荐的方式循环遍历它们,如下所示: listener=firestoredb.collection('bids').onSnapshot(function(doc){ doc.forEach(function(doc){ currentbid=doc.data().bid; console.log(currentbid) }); }); 我想知道是否可以将当前出价与下一个文档的doc.
listener=firestoredb.collection('bids').onSnapshot(function(doc){
doc.forEach(function(doc){
currentbid=doc.data().bid;
console.log(currentbid)
});
});
我想知道是否可以将当前出价与下一个文档的doc.data()出价值进行比较。我以为我可以通过获取当前索引来实现这一点,但forEach的工作方式似乎不像遍历普通数组。在这种情况下,我只得到“未定义”。我可以得到一个索引并以某种方式要求(索引+1)来比较值吗
例如,上面的代码可能返回:
100
150
300
200
200
100
我想知道当前出价是否等于下一个当前出价。因此,当它到达第一个“200”时,它将被标记,因为下一个currentbid也将是“200”。在不允许随机访问的结构中比较元素的常用方法,因此它会记住上一项并将其用于比较 比如:
listener=firestoredb.collection('bids').onSnapshot(function(doc){
let latestbid = -1; // or some other value that can't occur
doc.forEach(function(doc){
currentbid=doc.data().bid;
console.log(currentbid)
if (currentbid === latestbid) {
console.log(`${currentbid} === ${latestbid}`);
}
latestbid = currentbid;
});
});
但您也可以直接访问,这是一个普通数组。因此:
firestoredb.collection('bids').onSnapshot(function(querySnapshot){
querySnapshot.docs... // is a normal array
是的,我想到我可以这样做,但我想结合其他逻辑进行比较。试图保持我的脚本的效率,而不是进行两个做相似事情的独立比较。因此,如果我无法访问下一个文档,这将是我的备份。你是说在我的结构中,随机访问是不可能的吗?我不确定。如果按照我描述的方式做不到,那么这就是最好的答案。这绝对是一种其他地方记录的技术,我想知道在我的脚本中是否可以使用Firestore的数据进行随机访问。我添加的第二个片段为您提供了一个支持随机访问的常规数组。如果你在这方面遇到问题,我建议你发布一个新的问题,展示你在
querySnapshot.docs
中的尝试。