Eine Nachricht zu einer Liste in der Firebase-Datenbank hinzufügen
Ich habe die folgende Firebase-Datenbankstruktur.uIds
ist eine Art vonList<String>
. Ich versuche eine weitere UID unter @ hinzuzufüguIds
mit einem inkrementierten Index.setValue()
undupdateChildren()
würde erfordern, dass ich vorhandene Daten abrufe, undpush()
fügt anstelle eines inkrementierten Index ein Element mit einer zufällig generierten Zeichenfolge als Schlüssel hinzu. Gibt es eine einfachere Möglichkeit, die vorhandenen Daten nicht abzurufen? Vielen Dank
"requests" : {
"request001" : {
"interests" : [ "x" ],
"live" : true,
"uIds" : [ "user1" ] // <---- from this
},
"request002" : {
"interests" : [ "y" ],
"live" : true,
"uIds" : [ "user2" ]
}
}
--------------------------------Bearbeiten
Sorry für die Unklarheit. Lassen Sie mich das näher erläutern. Angenommen, ich habe die obige Datenbank und möchte sie auf die folgende aktualisieren.
"requests" : {
"-KSVYZwUQPfyosiyRVdr" : {
"interests" : [ "x" ],
"live" : true,
"uIds" : [ "user1", "user2" ] // <--- to this
},
"-KSl1L60g0tW5voyv0VU" : {
"interests" : [ "y" ],
"live" : true,
"uIds" : [ "user2" ]
}
}
ishmaelMakitlas Vorschlag,mDatabase.child("requests").child("request001").setValue(newRequest)
, überschreibt die "request001" mit "newRequest". Also sollte ich die vorhandenen Daten von "request001" abrufen und "user2" zur Liste hinzufügenuIds
. Es wird ungefähr so aussehen:
mDatabase.child("requests").child("request001").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Request newRequest = dataSnapshot.getValue(Request.class);
newRequest.uIds.add("user2");
mDatabase.child("requests").child("request001").setValue(newRequest);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
Aber ich frage mich, ob dieser Prozess notwendig ist, da ich versuche, einfach ein Element zur Liste hinzuzufügenuIds
.