Java Android firebase无数据查询
我正在使用firebase数据库的Android SDK 在数据库中,我有一个按用户排列消息的结构,这样,如果我需要他们的消息,我只需按用户查询Java Android firebase无数据查询,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在使用firebase数据库的Android SDK 在数据库中,我有一个按用户排列消息的结构,这样,如果我需要他们的消息,我只需按用户查询 myDatabase -> messages -> JonDoe -> "You forgot your mail" -> "Buy groceries" -> Ja
myDatabase -> messages -> JonDoe
-> "You forgot your mail"
-> "Buy groceries"
-> JaneDoe
-> "Dog's birthday!"
问题是如果用户不存在,监听器会一直等待,我想在这种情况下显示“你没有消息”。(例如,如果我在上面的示例中查询用户“CharlesDoe”)
有没有办法检查查询之前/之后/期间是否存在引用?尝试以下方法:
DatabaseReference root =FirebaseDatabase.getInstance().getReference();
DatabaseReference user = root.child("myDatabase").child("messages");
user.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
if (snapshot.child("CharlesDoe").exists()) {
// run some code
}else{
Toast.makeText(this,"no messages",Toast.Length_LONG).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
在这里,它将查询节点消息
,然后检查子节点是否存在,并执行所需操作。试试这个
DatabaseReference root =FirebaseDatabase.getInstance().getReference();
DatabaseReference user =
root.child("myDatabase").child("messages").child("CharlesDoe");
user.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
if (snapshot.exists()) {
// run some code
}else{
Toast.makeText(this,"no messages",Toast.Length_LONG).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
出色,工作得很有魅力!,我用的是“onChildEventListener”,这个答案对那个监听器不起作用,做了一些修改,现在一切都好了。非常感谢。