Firebase查询下载整个数据库。为什么?

时间:2018-12-30 23:52:27

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

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

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数据库结构 enter image description here

Firebase规则 enter image description here

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

1 个答案:

答案 0 :(得分:5)

索引需要在查询的位置定义。由于您是在data/users上运行查询,因此您需要在其中定义索引:

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

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

请注意,您应用的日志输出应显示一条错误消息,其中包含此信息。我强烈建议您在无法正常工作的情况下检查日志输出。