如何确保setValue到firebase子级成功工作



我正在使用addOnCompleteListener,但我需要一次将Value设置为多个子项,如果我检查第一个子项是否更新,然后更新第二个子项,然后再更新第三个子项,那就不好了。。。等等,这将是一个非常复杂的

此外,我还需要测试addOnFailureListener, addOnCanceledListener,以及它们何时会被触发,以及在这种情况下应该采取什么样的最佳操作

来自文档:

public Task<Void> setValue (Object value)

将此位置的数据设置为给定值。将null传递给setValue((将删除指定位置的数据。此方法接受的值的本地类型对应于JSON类型:

布尔

字符串

映射

列出

因此,如果您有多个setValue(),您可以执行以下操作:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
Map<String, Object> values = new HashMap<>();
values.put("name","peter");
values.put("age","100");
ref.setValue(values).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
System.out.println("completed");
}
});

你可以使用pojo类来代替map。

https://firebase.google.com/docs/reference/android/com/google/firebase/database/DatabaseReference#setValue(java.lang.Object(

最新更新