如何更新Firebase数据库中的项目列表。我可以使用setValue设置新列表,但我找不到如何添加一个列表项。 (我不希望发送列表中的所有项目仅更新一个项目。)
在此示例中,我尝试执行此操作,但方法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) {
}
});
}
答案 0 :(得分:0)
这是我的错。我在ref.child(app.getFirebaseKey());
的内部类intead中使用了ref