So habe ich meine Backend mit Firebase. Was ich erreichen möchte, ist das Hinzufügen von Benutzerübereinstimmungen zu einer Benutzer-ID. Wenn sich der Benutzer jedoch zunächst anmeldet, sind keine Übereinstimmungen vorhanden. Ich versuche zu überprüfen, ob das "match" -Kind in einem Benutzerkind vorhanden ist oder nicht, wenn kein list-Kind erstellt wird und die erste Übereinstimmung gespeichert wird. Wenn es jedoch bereits vorhanden ist, wird die Übereinstimmung einfach hinzugefügt. Hier ist mein Code:Firebase überprüfen, ob Kind existiert
public void setMatch(final String match){
final Firebase ref = new Firebase("FIREBASEURL");
final Firebase userRef = ref.child("Flights").child(userName);
userRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
System.out.println("does the child exist? " + dataSnapshot.child("matches").exists());
if(!dataSnapshot.child("matches").exists()){
ArrayList<String> matches = new ArrayList<String>();
matches.add(match);
Firebase matchesRef = userRef.child("matches");
matchesRef.setValue(matches);
userRef.removeEventListener(this);
}else if(dataSnapshot.child("matches").exists()){
Map<String, Object> matches = new HashMap<>();
matches.put("matches", match);
userRef.child("matches").push().setValue(matches);
userRef.removeEventListener(this);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
Derzeit wird der Wert zweimal hinzugefügt wird (die sonst, wenn zweimal aufgerufen wird, wenn das Feld bereits/seinen Namen existiert, wenn dies nicht der Fall). Ich bin mir nicht sicher, was ich falsch mache.