Javascript Firestore onSnapshot为每个可能比较当前文档的文件';s值为;“下一步”;文件';s值多少?

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.

当我在Firestore中执行返回多个文档的查询时,我使用forEach以推荐的方式循环遍历它们,如下所示:

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
中的尝试。