首页 > 解决方案 > Firebase 查询下载整个数据库。为什么?

问题描述

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

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会下载整个数据库?这会导致很长的加载时间和大量的下载数据....

标签: firebaseionic-frameworkfirebase-realtime-databaseionic3angularfire2

解决方案


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

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

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

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


推荐阅读