特定の電子メールを持つユーザが存在するかどうかを確認しようとしています。この電子メールを持つユーザーがデータベースにあるため、チェックでfalseの代わりにtrueが返されます。ここでFirebaseが存在するかどうかをチェックすると、falseが返されます。
は、スキーマです:
ここでは、コードです:
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) {
}
});
あなたは 'addListenerForSingleValueEvent'の代わりに' addValueEventListener'を使用するとどのような動作が見られますか? –
@ JohnO'Reillyそれは、 'addValueEventListener'を使って変です。しかし、私はなぜだろうか? –
私はキャッシュされたバージョンを返すところがあります( 'setPersistenceEnabled(true)'を呼びますか?)。以下はより良い説明です - http://stackoverflow.com/questions/34486417/firebase-offline-capabilities-and-addlistenerforsinglevalueevent –