Android firebase没有数据查询

时间:2017-11-17 20:38:13

标签: java android firebase firebase-realtime-database

我正在使用Android SDK for firebase数据库。

在数据库中,我有一个结构,我保留用户订购的消息,这样,如果我需要他们的消息我只是由用户查询。

myDatabase -> messages -> JonDoe
                            -> "You forgot your mail"
                            -> "Buy groceries"
                       -> JaneDoe
                            -> "Dog's birthday!"

问题是,如果用户不存在,则侦听器会一直等待,并且我希望在这种情况下显示“您没有消息”。 (例如,如果我在上面的例子中查询用户“CharlesDoe”)

有没有办法在查询之前/之后/期间检查引用是否存在?

2 个答案:

答案 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) {

}
});