使用limitToFirst或limitToLast时,Firebase是否加载所有项目?
例如,我的数据库结构如下:使用limitToFirst或limitToLast时,Firebase是否加载所有项目?,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,例如,我的数据库结构如下: "chatMessages": { "chat1": { "m1": { "name": "eclarke", "message": "The relay seems to be malfunctioning.", "timestamp": 1459361875337 }, "m2": { ... }, "m3": { ... } }, "chat2
"chatMessages": {
"chat1": {
"m1": {
"name": "eclarke",
"message": "The relay seems to be malfunctioning.",
"timestamp": 1459361875337
},
"m2": { ... },
"m3": { ... }
},
"chat2": { ... },
"chat3": { ... }
}
现在,一些聊天,比如说,有1000条信息。当我使用LimitToLast检索最后100条消息时。Firebase是先加载所有1000条消息,然后再向我发送我想要检索的100条消息,还是将加载限制为我真正需要的100条消息?我不确定,因为我读了很多关于保持数据库尽可能平坦的文章
如果FixBASE首先加载所有1000条消息,我是否应该考虑以特定的方式嵌套?
我希望社区能把事情讲清楚 这里有两种可能性: 在键上有一个隐式索引,或者对于查询有一个显式索引,数据在服务器上被过滤 查询没有索引,在这种情况下,该位置的所有数据都将在客户端上检索和排序/筛选
谢谢你,弗兰克。我试图理解会发生什么,但为了限制服务器负载,最好给它一个按子时间戳排序的时间戳?不一定。您也可以通过键或值进行限制。但你的问题在这方面相当抽象,所以我的回答再具体不过了。我同意,这是一个抽象的表述。我真的试图理解服务器端发生了什么,因为我不想不必要地使服务器过载。非常感谢你的回答,它让我有了更好的洞察力。再次感谢!