我正在使用Android SDK for firebase数据库。
在数据库中,我有一个结构,我保留用户订购的消息,这样,如果我需要他们的消息我只是由用户查询。
myDatabase -> messages -> JonDoe
-> "You forgot your mail"
-> "Buy groceries"
-> JaneDoe
-> "Dog's birthday!"
问题是,如果用户不存在,则侦听器会一直等待,并且我希望在这种情况下显示“您没有消息”。 (例如,如果我在上面的例子中查询用户“CharlesDoe”)
有没有办法在查询之前/之后/期间检查引用是否存在?
答案 0 :(得分:1)
试试这个:
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) {
}
});
此处它将在节点messages
上进行查询,然后它将检查子节点是否存在并执行所需的操作。
答案 1 :(得分:0)
试试
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) {
}
});