【问题标题】:Firebase query download the whole database. Why?Firebase 查询下载整个数据库。为什么?
【发布时间】:2018-12-30 23:52:26
【问题描述】:

我尝试从实时数据库下载并仅显示特定数据。我有以下代码:

getUserPlatformIos() {
    this.dataRef = this.afDatabase.list('data/users', ref => ref.orderByChild('meta/platform').equalTo('ios'));
      this.data = this.dataRef.snapshotChanges().map(changes => {
        return changes.map(c => ({ key: c.payload.key, ...c.payload.val() }));
      });
      return this.data;
  }

我的 firebase 数据库结构

Firebase 规则

如果我之前查询,为什么 firebase 会下载整个数据库?这会导致很长的加载时间和大量的下载数据....

【问题讨论】:

  • 请将屏幕截图替换为实际规则和 JSON 作为文本。您可以通过单击your Firebase Database console 的溢出菜单 (⠇) 中的 Export JSON 链接轻松获取 JSON。将 JSON 和规则作为文本使其可搜索,使我们能够轻松地使用它们来测试您的实际规则和数据,并将其用于我们的答案中,一般来说这只是一件好事。

标签: firebase ionic-framework firebase-realtime-database ionic3 angularfire2


【解决方案1】:

索引需要在您查询的地方定义。由于您在 data/users 上运行查询,因此您需要在此处定义索引:

"users": {
  ".indexOn": "meta/platform"
}

这在users 上定义了一个索引,该索引具有每个用户的meta/platform 属性的值。

请注意,您的应用程序的日志输出应显示一条包含此信息的错误消息。我强烈建议在某些事情无法按照您期望的方式工作时检查日志输出。

【讨论】:

  • 完美!!那行得通!非常感谢! :) 我没有在浏览器控制台中收到错误消息...
猜你喜欢
  • 2019-01-12
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多