我试图检查具有特定电子邮件的用户是否存在。具有此电子邮件的用户位于数据库中,因此检查应该返回true而不是false。Firebase检查是否存在返回false,它应该返回true
这里的模式:
下面的代码:
final DatabaseReference userRef = FirebaseDatabase.getInstance().getReference().child("users");
userRef.orderByChild("email").equalTo("[email protected]").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) {
}
});
如果使用'addValueEventListener'而不是'addListenerForSingleValueEvent',是否会看到任何不同的行为? –
@ JohnO'Reilly这很奇怪,使用'addValueEventListener'工程。但我想知道为什么? –
我有时见过它返回缓存版本(你是否调用'setPersistenceEnabled(true)'?)。以下有更好的解释 - http://stackoverflow.com/questions/34486417/firebase-offline-capabilities-and-addlistenerforsinglevalueevent –