Wie zum Anhängen von Daten an ein Array in der Feuerstellung?
Habe ich ein array namens subscribedTo
in meinem Benutzer-Knoten. Jetzt möchte ich anfügen, einige push ID's
auf das array, wenn ein Benutzer abonniert ist.
Aber die push ID
ersetzt werden, anstatt angehängt.
Wie kann ich hängen Sie die push-ID in das array?
Schema
"tester@gmail,com": {
"email": "tester@gmail,com",
"hasLoggedInWithPassword": true,
"name": "tester",
"subscribedTo": [
"-KFPi5GjCcGrF-oaHnjr"
],
"timestampJoined": {
"timestamp": 1459583857967
}
}
CODE
public void onSubscribe(View v) {
final Firebase firebaseRef = new Firebase(Constants.FIREBASE_URL);
final HashMap<String, Object> userMap = new HashMap<String, Object>();
pushIDList.add(PROG_ID);
userMap.put("/" + Constants.FIREBASE_LOCATION_USERS + "/" + mEncodedEmail + "/subscribedTo",
pushIDList);
firebaseRef.updateChildren(userMap, new Firebase.CompletionListener() {
@Override
public void onComplete(FirebaseError firebaseError, Firebase firebase) {
Toast.makeText(ProgramDetail.this, "You are subscribed", Toast.LENGTH_SHORT).show();
}
});
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim Aufruf
updateChildren()
mit einer Karte, FB nimmt jeden Schlüssel und ersetzt das Objekt an dieser Position mit dem Wert aus der Karte.Den FB-Dokumentation auf
updateChildren()
sagt über ihn:Also in deinem Fall, ersetzen Sie den gesamten Inhalt
"/" + Constants.FIREBASE_LOCATION_USERS + "/" + mEncodedEmail + "/subscribedTo"
.Die Lösung ist entweder die
PROG_ID
Teil des Schlüssels in der Karte:Oder rufen Sie einfach
setValue()
in der unteren Position in die JSON-Baum:Werden Sie feststellen, dass in beiden Fällen entledigte ich mich der Elemente in einem array zu Gunsten der empfohlene Struktur für eine so genannte index: