android - 仅阅读 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
}
}
解决方案
或者,您可以通过 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) {
}
});
推荐阅读
- c++ - 为什么函数中用作返回值的类实例在函数返回时不调用其析构函数?
- maven - 使用本地依赖和远程
- ios - 使用 AVAudioPlayerNode 播放片段时,我可以注册两个不同的回调,调度完成和播放完成吗?
- c# - 如何读取CSV并将其一一放入DataGrid视图C#
- php - 如何从我的第一页复制这个隐藏的值并在我的第二页发布?
- android - setAudioRoute (int routes) 有哪些不同的 (int routes) 值?
- javascript - 为什么当触发合成事件时,与之相关的事件不会发生?
- vb.net - vb.net Datagrid 值到另一个数据网格
- react-native - 处理 android 上 react-native firebase phone auth 的自动检索
- deep-learning - 频谱图数据集上的 VGG16