【问题标题】:Firebase Android - updateChildren owerwrites key-values in nested JSON structureFirebase Android - updateChildren 在嵌套 JSON 结构中写入键值
【发布时间】: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) 完全相同。你确定你在正确的节点上调用它吗?有什么方法可以添加更多调试信息来显示正在发生的事情?

标签: android json kotlin firebase-realtime-database


【解决方案1】:

试试这个database.child("groups").child("aw").child("members").setValue(hm);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    相关资源
    最近更新 更多