0
Firebaseデータベースの項目の更新方法。私は新しいリストを設定するためにsetValueを使うことができますが、リストの1つの項目を追加する方法を見つけることができませんでした。 (私はリストのすべてのアイテムを更新するために1つのアイテムのみを送信したくない)。Firebase上のアイテムの更新方法は?
この例では、これを実行しようとしていますが、ref.updateChildrenメソッドが正しく動作しません。それはdatabaseReferenceを示していますが、私はFirebaseに何の変更も見ません。
final DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("apps");
for (final App app : apps) {
ref.child(app.getFirebaseKey()).addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (!dataSnapshot.exists()) {
ref.setValue(app.getFirebaseValue());
} else {
//check need add my phone or no.
FirebaseApp firebaseApp = dataSnapshot.getValue(FirebaseApp.class);
String myPhone = app.getFirebaseValue().getPhones().get(0);
if (firebaseApp.getPhones().contains(myPhone)) {
//do nothing
} else {
firebaseApp.getPhones().add(myPhone);
Map<String, Object> updates = new HashMap<String, Object>();
updates.put("phones", firebaseApp.getPhones());
ref.updateChildren(updates, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
if (databaseError == null) {
Log.i(TAG, "databaseReference=" + databaseReference);
} else {
Log.i(TAG, "databaseError=" + databaseReference);
}
}
});
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}