我有一个非常庞大的用户数据库,需要进行分页。结构如下
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) => {
是否有更好的方法来获取有限的拥有日志的用户组?任何反馈将不胜感激
答案 0 :(得分:2)
我应该添加一个索引来辅助此查询吗?还是我的语法不正确?
答案始终是 是。在您的安全规则中没有索引的情况下,服务器会将该位置的所有数据发送给客户端,然后由客户端对其进行排序和过滤。
因此,对于您的查询,您的规则将需要在logs
节点下的users
上包含一个索引。