每次用户检索Firebase实时数据库消息时,他希望仅通过实时数据库规则检索(读取)来自消息传递节点的最后50条消息。该怎么做?
消息节点结构:
+ chats
+ regionChat (ex: eua)
+ idChat (ex: 534854923)
+ messages
+ idMessage1
+ idMessage2
+ idMessage3
+ idMessage4
+ idMessage5
...
我在firebase文档中看到了这一点,但是我无法适应我的数据结构:
messages: {
".read": "query.orderByKey &&
query.limitToFirst <= 50"
}
此刻,我的规则如下:
{
"rules": {
".read": true,
".write": true
}
}
答案 0 :(得分:0)
您需要增强“查询”
这应该有效
{
"rules": {
".read": "query.limitToFirst <= 50",
".write": true
}
}
答案 1 :(得分:0)
或者,您可以通过查询来代替使用规则。
DatabaseReference myReference = FirebaseDatabase.getInstance().getReference();
myReference = myReference().child("chats")...child("messages");
Query query = myReference.orderByID().limitToFirst(20).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
//
for (DataSnapshot issue : dataSnapshot.getChildren()) {
// do something with the data
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});