In meiner App gibt es eine Aktivität, die beim Klicken auf die Schaltfläche Speichern, 2 Sätze von Daten in 2 verschiedenen Orten von push()
gemacht werden, Da an beiden Orten ein Unikat ID wird benötigt.Firebase, zweite push() in der gleichen Methode funktioniert nicht
Ich habe den Beispielcode in der Firebase Führung gefolgt und hinzugefügt, um den zweiten Schub
String userId = auth.getCurrentUser().getUid().toString();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
DatabaseReference firstDatabaseRef = reference.child("first");
DatabaseReference secondDatabaseRef = reference.child("second").child(userId);
String key = firstDatabaseRef.child(userId).push().getKey();
First first = new First(firstAmount,key,firstName);
Map<String, Object> firstValues = first.toMap();
String keySecond = secondDatabaseRef.child(key).push().getKey();
Second second = new Second(secondName,secondAmount,keySecond,key);
Map<String, Object> secondValue = second.toMap();
Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put("/first/" + userId + "/" + key, firstValues);
childUpdates.put("/second/" + userId + "/" + key + "/" + keySecond, secondValue);
reference.updateChildren(childUpdates);
Das Ergebnis, das ich für first
bekam, war genau so, wie ich aber für second
erwartet, statt second/<userId>/<key>/<keySecond>/children
zu schaffen, erhalte ich diese :
"second" : {
//userId
"5TQLPlGf4mbcBRKesQwR30fH1L22" : {
//key
"-KL1030IywlNpkTGC7mU" : {
"secondAmount" : "147",
"Key" : "-KL1030IywlNpkTGC7mU",
"secondName" : "secondName",
"keySecond" : "-KL1030PZlHqD_asSR_8",
}
}
}
Statt die letzten Kinder in einer anderen eindeutigen ID zu haben, die durch die Art und Weise in den keySecond
aufgezeichnet ist, sie sind alle direkt mit dem Schlüssel hinzugefügt. Dies kann nicht akzeptiert werden, da alle key
viele keySecond
haben müssen. Ich hoffe, dass ich mein Problem richtig erklärt habe. Bitte sag mir was ich falsch mache. Wie soll ich meinen Code ändern oder sollte ich meine Datenstruktur komplett überdenken?
Ich schätze wirklich Ihre schnelle Antwort. Ich habe getan, was Sie vorgeschlagen haben, aber trotzdem bekomme ich genau die gleichen Ergebnisse. – Ramtin
@Frank: Ich denke, Ihre Lösung behebt ein Problem, das nicht existiert. Die zwei Kinder von 'childUpdates' sind auf' first' und 'second' verwurzelt. Ihre Werte überschneiden sich nicht, oder? –
Ah, richtig .... guter Fang! Das habe ich völlig übersehen. Zurück zum Scannen der Hashmaps ist es ... –