首页 > 解决方案 > 仅阅读 firebase 中的最后 50 个帖子(Firebase 规则)

问题描述

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

标签: androidfirebasefirebase-realtime-databasefirebase-security

解决方案


或者,您可以通过 Query 来代替使用规则。

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

        }
    });

推荐阅读