Meine App ermöglicht das Hinzufügen eines Players zu einem Knoten, sobald sie hinzugefügt wurden Ich verwende die folgende Methode, um nach phoneNum zu suchen, um festzustellen, ob dieser Player im Knoten 'users' existiert.Firebase DataSnapshot Nullwerte
Wo ich Probleme habe ist, dass ich in der Lage sein muss, auf die Werte aus dem datasnapshot für den Benutzer innerhalb des gefundenen übereinstimmenden Knotens zugreifen zu können. Zum Beispiel den Wert der Benutzer-ID zurückgeben. Wenn ich dies versuche, wird es weiterhin als Nullwert angezeigt, und wenn ich versuche, mich an der Konsole anzumelden, beschwert es sich, dass es ein Nullwert ist, der keinen Sinn ergibt, da die if-Anweisung darauf achten sollte.
Die Methode kann feststellen, ob ein Player im Benutzerknoten vorhanden ist, und eine Toast-Nachricht anzeigen, um dies anzuzeigen.
Code:
public void checkPlayerNum(final String phoneNum) {
DatabaseReference mDatabaseReference =
FirebaseDatabase.getInstance().getReference().child("users");
if (!TextUtils.isEmpty(phoneNum)) {
final Query phoneNumReference = mDatabaseReference.orderByChild("phoneNum").equalTo(phoneNum);
ValueEventListener phoneNumValueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue() != null) {
// String key = String.valueOf(dataSnapshot.getValue());
User mUser = dataSnapshot.getValue(User.class);
String uId = mUser.getUid();
// Log.d("TAG",uId);
Toast.makeText(getApplicationContext(), "* found **"+ uId , Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "****NOT FOUND****", Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
phoneNumReference.addListenerForSingleValueEvent(phoneNumValueEventListener);
} else {
Log.e("Error","phoneNum is null");
}
}
Dank Rishabh, diese über die gleiche Art und Weise wie der Code ausführt. Er markiert die Toast-Nachricht, die besagt, dass die Übereinstimmung gefunden wurde, aber wenn ich versuche, den Wert zu erhalten, wird er als Null ausgegeben –