【问题标题】:how to break querySnapshot on Firestore?如何打破 Firestore 上的 querySnapshot?
【发布时间】:2020-06-01 06:06:57
【问题描述】:
我需要打破 querysnapshot 循环。有可能吗?
我尝试了 for 循环。但下面的错误即将到来。
如何解决这个错误或者有什么办法可以打破快照循环?
代码
return query.get()
.then((snapshot) => {
for(const doc of snapshot) {
let data = doc.data()
if (data.age == 16) {
break;
}
}
错误
类型 'QuerySnapshot' 必须有一个返回迭代器的 'Symbol.iterator' 方法。
【问题讨论】:
标签:
typescript
firebase
google-cloud-firestore
【解决方案1】:
您可以使用 QuerySnapshot 的 docs 属性,它返回 QuerySnapshot 中所有文档的数组。
例如,使用 for 循环:
return query.get()
.then((snapshot) => {
const snapshotsArray = snapshot.docs;
for (var i = 0; i < snapshotsArray.length; i++) {
const data = snapshotsArray[i].data()
if (data.age == 16) {
break;
}
}
}
或for-of:
return query.get()
.then((snapshot) => {
const snapshotsArray = snapshot.docs;
for (const snap of snapshotsArray) {
const data = snap.data()
if (data.age == 16) {
break;
}
}
}
【解决方案2】:
Docs 说QuerySnapshot<T> 不是迭代器/异步迭代器,因此您不能像使用它一样使用它。似乎迭代它的唯一方法是使用forEach,它似乎没有提供“早期中断”的方法。