Java 如何在firebase messages节点获取最后发送给我的消息?
第一个孩子是我的UID代码,很容易获取,第二个孩子是发送者的UID,我无法获取 第三个孩子是一把独特的钥匙 我只想检索每个发件人的最后一封邮件 这是我的密码Java 如何在firebase messages节点获取最后发送给我的消息?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,第一个孩子是我的UID代码,很容易获取,第二个孩子是发送者的UID,我无法获取 第三个孩子是一把独特的钥匙 我只想检索每个发件人的最后一封邮件 这是我的密码 String my_Id = currentuser.getUid(); dataQuery = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id); dataQuery.addChildEventListener(new ChildEv
String my_Id = currentuser.getUid();
dataQuery = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id);
dataQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot getalldata, String s) {
Map<String,Object> sender = (Map<String,Object>) getalldata.getValue());
for (Map.Entry<String, Object> entry : sender.entrySet()){
Map singleUser = (Map) entry.getValue();
String sender_UID = entry.getKey();
// I can't get UID of the sender so I can't get last message
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d("szx", "onCancelled", databaseError.toException());
}
});
String my_Id=currentuser.getUid();
dataQuery=FirebaseDatabase.getInstance().getReference(“消息”).child(我的Id);
dataQuery.addChildEventListener(新的ChildEventListener(){
@凌驾
公共void onchildaded(DataSnapshot getalldata,字符串s){
Map sender=(Map)getalldata.getValue();
对于(Map.Entry:sender.entrySet()){
Map singleUser=(Map)entry.getValue();
String sender_UID=entry.getKey();
//我无法获取发件人的UID,因此无法获取最后一条消息
}
}
@凌驾
公共void onChildChanged(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
ChildRemoved上的公共void(DataSnapshot DataSnapshot){
}
@凌驾
已移动ChildMoved上的公共void(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
Log.d(“szx”,“onCancelled”,databaseError.toException());
}
});
问题是我无法获取发件人的UID,因此无法获取邮件
是否有任何方法可以在不需要知道发件人UID的情况下获取最后一封邮件?
如果这是不可能的,那么如何获取每个发件人的每个UID并获取最后的消息
在您的数据库中,您有:
Messages
idthatyoucanget
senderid
randomid
要获取无法获取的id,请尝试以下操作:
String my_Id = currentuser.getUid();
dataQuery = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id);
dataQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot getalldata, String s) {
String ids=getalldata.getKey();
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d("szx", "onCancelled", databaseError.toException());
}
});
由于您使用的是OnChildaded,因此无需迭代即可获取发件人id。是的,您是对的。。那我怎么才能得到最后的消息呢?你能完成你的答案吗?为此,你需要迭代,
for(datasnaphot数据:getalldata.getChildren()){String messages=datas.child(“message”).getValue().toString()