当我在 Firebase 中找到要获取的数据时如何停止 forEach? [复制]

Posted

技术标签:

【中文标题】当我在 Firebase 中找到要获取的数据时如何停止 forEach? [复制]【英文标题】:How to stop forEach when I find the data I want to get in Firebase? [duplicate] 【发布时间】:2019-12-22 09:10:15 【问题描述】:

我想从 Firebase 获取数据。但我知道 Firebase 使用 forEach 来搜索数据库中的数据。

  db.collection('users').get()
  // eslint-disable-next-line promise/always-return
    .then((snapshot) => 
      snapshot.forEach((doc) => 
        console.log(doc.id, '=>', doc.data());
        myData.push(doc.data().first);
      );

      const title = myData.find( e => e === 'Dennis');
      res.render('index', title);
      // return null;
    )
    .catch((err) => 
      console.log('Error getting documents', err);
    );

您可以看到 forEach 将搜索数据库中的每个 doc.data().first。 但我认为这是在数据库中搜索数据的一种非常低效的方法。我希望 forEach 在找到我想要获取的数据时停止。

【问题讨论】:

在您的 forEach 中,您目前如何知道您何时找到了数据? @Jim 我没有设置 if 条件来知道我何时找到了我的数据。因为 forEach 即使找到数据,它仍然会循环。 【参考方案1】:

根据DataSnapshot.forEach 的 API 文档,无法终止循环。即使可以,它仍然会从查询中读取每个匹配的文档。这意味着无论 forEach 发生什么情况,您仍在将每个文档传输给客户端。

如果您想提高效率,请仅查询您知道要接收的文档。在您的情况下,如果您想查找特定字段包含字符串“Dennis”的文档,您应该只查询这些文档,如documentation 中所述。

【讨论】:

以上是关于当我在 Firebase 中找到要获取的数据时如何停止 forEach? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何从firebase存储中获取图片,图片的网址在firestore中。

如何从 Firebase 获取单个数据库引用

Firebase 获取数据

如何使用 firebase 获取 listView 中每个项目的数据?

当我在firebase上删除他的帐户时如何从应用程序中注销用户?

在 Flutter 中将 Firebase 数据作为 Listview 构建器获取