Firebase 查询下载整个数据库。为什么?
Firebase query download the whole database. Why?
我尝试从实时数据库下载并仅显示特定数据。我有以下代码:
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会下载整个数据库?这会导致很长的加载时间和大量的下载数据....
需要在查询的地方定义索引。由于您 运行 对 data/users
的查询,这就是您需要定义索引的地方:
"users": {
".indexOn": "meta/platform"
}
这在 users
上定义了一个索引,它具有每个用户的 meta/platform
属性 的值。
请注意,您的应用程序的日志输出应该显示一条错误消息,其中包含这些信息。我强烈建议在某些内容无法按您预期的方式工作时检查日志输出。
我尝试从实时数据库下载并仅显示特定数据。我有以下代码:
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会下载整个数据库?这会导致很长的加载时间和大量的下载数据....
需要在查询的地方定义索引。由于您 运行 对 data/users
的查询,这就是您需要定义索引的地方:
"users": {
".indexOn": "meta/platform"
}
这在 users
上定义了一个索引,它具有每个用户的 meta/platform
属性 的值。
请注意,您的应用程序的日志输出应该显示一条错误消息,其中包含这些信息。我强烈建议在某些内容无法按您预期的方式工作时检查日志输出。