Firebase Android - updateChildren 在嵌套 JSON 结构中写入键值
Posted
技术标签:
【中文标题】Firebase Android - updateChildren 在嵌套 JSON 结构中写入键值【英文标题】:Firebase Android - updateChildren owerwrites key-values in nested JSON structure 【发布时间】:2020-12-17 11:18:12 【问题描述】:我试图找到有关以下问题的答案 - 在类似的问题中找到了几个但仍然无法解决。如果我将结构展平,它似乎可以工作,但为什么呢?
基本上 - 我如何在 Firebase 的 json 对象中添加更多键值对而不覆盖现有键值对?
假设我有以下 jsonstructure
"groups" :
"aw" :
"members" :
"Lisa" : "true"
,
"name" : "aw university"
然后如何在成员中添加更多键值对而不覆盖现有键值对?例如,我想再添加一个成员 - Magnus,这样对象就变成了:
"groups" :
"aw" :
"members" :
"Lisa" : "true",
"Magnus" : "true"
,
"name" : "aw university"
我尝试过 updateChildren 没有成功:
var hm = HashMap<String, Any>()
hm.put("magnus", "true");
database.child("groups").child("aw").child("members").updateChildren(hm)
发生的情况是现有的键值(Lisa: true)被覆盖
这个问题有简单的解决方案吗?
奇怪的是,如果结构被展平 - updateChildren 工作并添加 Magnus
"groups" :
"aw" :
"name" : "aw university"
,
"members" :
"Lisa" : "true",
"Magnus" : "true"
但我希望“members”成为“aw”的孩子
【问题讨论】:
第一行应该完全符合您的要求,因为它与database.child("groups").child("aw").child("members").child("magnus").setValue(true)
完全相同。你确定你在正确的节点上调用它吗?有什么方法可以添加更多调试信息来显示正在发生的事情?
【参考方案1】:
试试这个database.child("groups").child("aw").child("members").setValue(hm);
【讨论】:
以上是关于Firebase Android - updateChildren 在嵌套 JSON 结构中写入键值的主要内容,如果未能解决你的问题,请参考以下文章
安装Firebase后运行pod install --repo-update时出错
随着 Android Studio 4.1 更新 'Plugin incompatible with the new build found: Firebase Services' 出现警告信息