有孩子存在的火力发火顺序

时间:2020-01-17 19:32:17

标签: firebase firebase-realtime-database

我有一个非常庞大的用户数据库,需要进行分页。结构如下

users > -userId > logs > -logId > {type, timestamp, ...}

并非所有用户都有日志,因此根据数据订购文档,如果我订购,请按“日志”显示这些用户(https://firebase.google.com/docs/database/web/lists-of-data#data-order

使用orderByChild()时,包含指定子键的数据 顺序如下:

指定子项的值为空的子项优先。

因此,我试图使用以下代码来检索带有日志的最后5个用户,但是云平台(2GB)上的内存不足。我应该添加索引来协助此查询吗,还是我的语法不正确?

admin.database().ref("users").orderByChild("logs").limitToLast(5).once("value", (snapshot) => {

是否有更好的方法来获取有限的拥有日志的用户组?任何反馈将不胜感激

1 个答案:

答案 0 :(得分:2)

我应该添加一个索引来辅助此查询吗?还是我的语法不正确?

答案始终是 是。在您的安全规则中没有索引的情况下,服务器会将该位置的所有数据发送给客户端,然后由客户端对其进行排序和过滤。

因此,对于您的查询,您的规则将需要在logs节点下的users上包含一个索引。

相关问题