【发布时间】:2020-07-25 17:57:18
【问题描述】:
在我的聊天应用程序中。我只想接收最近添加的消息,所以我试图通过查询 startAt() 接收消息,但查询不返回任何数据。
请帮我找出我犯错的地方:
这是我的数据结构:(My Datastructure image)
-聊天
-TrHRsy8x7WYZjodQrNrzfumw16z2g2dojhGBdie07PXqhl47l8GWN1a2
-LastMessage
-消息
-MCi-gOmhLUl5MuLtCiI
-MCi-hstmFyAfAczexvI
LT: -11108656
电话:1595278548931
c: 2
米:“嗨”
r:“g2dojhGBdie07PXqhl47l8GWN1a2”
s:“TrHRsy8x7WYZjodQrNrzfumw16z2”
-MCi-kukmwJpU3ubswId
Query ref2 = FirebaseDatabase.getInstance().getReference("Chats/" + uniquechatid()).child("Messages").orderByChild("T").startAt("1595278548931");
receiveListener = ref2.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName)
{
if (snapshot.getValue() != null) {
Chat chat = snapshot.getValue(Chat.class);
assert chat != null;
Log.e("chat added",chat.getM());
}
}
});
我只想接收来自这些时间戳的消息。我什至尝试了 startAt(value,key) .startAt() 不起作用。如果我删除 startAt() 则数据接收完美。
我的消息上传:
private void sendMessage(String sender, String receiver, String message) {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
HashMap<String, Object> hashmap = new HashMap<>();
hashmap.put("s", sender);
hashmap.put("r", receiver);
hashmap.put("m", message);
hashmap.put("c", 1);
hashmap.put("T",ServerValue.TIMESTAMP);
hashmap.put("LT",timenow);
reference.child("Chats/"+uniquechatid()+"/Messages").push().setValue(hashmap);
}
我的数据库规则:
{
"rules": {
".read": true,
".write": true,
"Chats": {
"$chatid":{
"Messages":{
"$messageid":{
".indexOn": "T"
}
}
}
}
}
}
【问题讨论】:
标签: android firebase firebase-realtime-database