我目前正在使用函数updateChildren()在多个路径中设置值。
当我的哈希映射具有所有必需的条目,5个项目时,对数据库的写入发生没有问题。
但是如果我只需要更新哈希映射中的值(如图4所示),则哈希映射中不存在的每个值都会在我的数据库中被删除。 (我的imageURL值在数据库中被删除,因为我的hashmap中不存在该值)。
从文档中可以看出,只有当键的值为null时,才会删除特定节点的值。根据我正在做的事情,当我的设备上的值为null时,我将其排除在哈希映射中。
我在更新孩子的价值观时出了什么问题?
All populated values writing to the database Selectively populated values, sans imageURL, which writes to the database but erases the already existing value for 'imageURL'
答案 0 :(得分:0)
包含密钥和旧值。或者,重写更新函数以在Hasmap的循环中逐个设置值。请注意,在数据库引用上使用put值编写散列映射时,将删除原始内容并在该位置插入新内容。换句话说,数据库引用上的putValue
删除引用的所有子项,然后它会在所提供的hasmap中写入可用的子项。请考虑以下示例:
map.add ("id", 1);
map.add ("msg", "hello");
dbRef.putValue (map);
map.clear ();
map.add ("msg", "world");
dbRef.putValue (map);
现在dbRef
节点看起来像
dbRef:
msg : world
id
不再存在。
修改强>
由于这是接受的答案,所以我正在添加一些参考资料以正式找到相同的答案。来自docs
对于基本的写入操作,您可以使用 setValue()将数据保存到指定的引用,替换该路径上的任何现有数据。