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

ele*_*nad 0 firebase ionic-framework firebase-realtime-database angularfire2 ionic3

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

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;
  }
Run Code Online (Sandbox Code Playgroud)

我的firebase数据库结构 在此输入图像描述

Firebase规则 在此输入图像描述

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

Fra*_*len 5

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

"users": {
  ".indexOn": "meta/platform"
}
Run Code Online (Sandbox Code Playgroud)

这定义了一个索引users,它具有meta/platform每个用户的属性值.

请注意,应用程序的日志输出应显示错误消息,其中包含此信息.我强烈建议每当某些内容无法正常工作时检查日志输出.