【问题标题】: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】:

      DocsQuerySnapshot&lt;T&gt; 不是迭代器/异步迭代器,因此您不能像使用它一样使用它。似乎迭代它的唯一方法是使用forEach,它似乎没有提供“早期中断”的方法。

      【讨论】:

        猜你喜欢
        • 2019-02-14
        • 1970-01-01
        • 1970-01-01
        • 2020-06-26
        • 1970-01-01
        • 1970-01-01
        • 2018-09-10
        • 2021-10-22
        • 2020-04-07
        相关资源
        最近更新 更多