仅阅读firebase中的最后50个帖子(Firebase规则)

时间:2019-08-11 20:16:39

标签: android firebase firebase-realtime-database firebase-security

每次用户检索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
  }
}

2 个答案:

答案 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) {

        }
    });