Javascript 实时更改Firestore查询快照大小

Javascript 实时更改Firestore查询快照大小,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,有没有办法在运行时有条件地将querySnapshot.size更改为0,以便forEach()只运行指定的时间?这样做会是一种好的做法吗 db.collection(“cities”).get()然后((querySnapshot)=>{ 让计数=0; querySnapshot.forEach((doc)=>{ 如果(计数=5){ //更改querySnapshot.size } console.log(doc.id,=>,doc.data()); 计数++; }); }); 根据您的评论“

有没有办法在运行时有条件地将
querySnapshot.size
更改为0,以便
forEach()
只运行指定的时间?这样做会是一种好的做法吗

db.collection(“cities”).get()然后((querySnapshot)=>{
让计数=0;
querySnapshot.forEach((doc)=>{
如果(计数=5){
//更改querySnapshot.size
}
console.log(doc.id,=>,doc.data());
计数++;
});
});
根据您的评论“您希望处理查询返回的5个
DocumentSnapshot
s,然后停止(
forEach()
)循环。”

我建议只查询5个文档,而不是查询集合中的所有文档,并在处理了其中5个文档后停止“处理”它们(即退出循环)

为此,应使用以下方法:

db.collection("cities")
.limit(5)
.get()
.then((querySnapshot) => {...});

除了可能节省一些下载时间外,您还可以节省一些阅读成本。

“有没有办法实时更改querySnapshot.size?”=>您的确切意思是什么?querySnapshot表示查询的结果。是否要更改查询参数,例如筛选?@RenaudTarnec我想将
querySnapshot
的长度更改为0,以便
forEach()
结束。因此,您只需处理查询返回的5
DocumentSnapshot
,然后停止循环。是的,这正是我需要的原因。是的,我知道我们可以这样做,但我想根据某些条件从所有文档中选择特定的文档。您不能用这些条件构建查询吗?在前端执行过滤确实不是一个好主意。没有用于我要执行的查询的预构建函数。我正在对QuerySnapshot下的文档应用查询没有预构建的方法来停止forEach。你可以抛出一个异常。但同样,这不是推荐的方法。如果您能够基于文档的字段值在前端应用给定的筛选,那么您应该能够在查询中应用它(您可能需要调整字段,但这应该是可能的)