致电:

HashMap<String, Object> updates = new HashMap<String, Object>();
updates.put(myKey, null);
mDatabase.updateChildren(updates);
updates.clear();


不从myKey位置执行期望值删除。通过克隆updates HashMap可以很容易地解决此问题,方法是:

mDatabase.updateChildren(new HashMap<String, Object>(updates));


这是错误还是预期的行为?有文件吗?

最佳答案

更新将异步发送到Firebase数据库。在更新完成之前,您不应该修改传递给Firebase的地图。

使用updateChildren() method that takes a completion listener很容易做到):

mDatabase.updateChildren(updates, new DatabaseReference.CompletionListener() {
    @Override
    public void onComplete(DatabaseError error, DatabaseReference ref) {
        if (error == null) {
            updates.clear();
        }
    }
});

10-06 09:01