Firebase检查是否存在返回false,它应该返回true

时间:2016-12-18 13:21:00

标签: java android firebase firebase-realtime-database

我试图检查是否存在具有特定电子邮件的用户。使用此电子邮件的用户位于数据库中,因此检查应返回true而不是false。

这是架构:

enter image description here

以下是代码:

final DatabaseReference userRef = FirebaseDatabase.getInstance().getReference().child("users");
userRef.orderByChild("email").equalTo("rafael.adel20@gmail.com").limitToFirst(1).addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        System.out.println(dataSnapshot); //returns { key = users, value = null }
        if(dataSnapshot.getChildrenCount() > 0) {
            //user already exists (Never executed)
        } else {
            //user doesn't exists (Always executed)
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

1 个答案:

答案 0 :(得分:2)

如果调用了setPersistenceEnabled(true),使用addListenerForSingleValueEvent会导致返回本地缓存版本的数据而不是服务器的最新版本(而调用addValueEventListener将确保您获得最新版本) 。如果使用addListenerForSingleValueEvent,另一种方法是调用query.keepSynced(true);