我想在同一键下添加值

时间:2019-04-18 02:10:00

标签: java android firebase firebase-realtime-database

"locs" : {
        "-Lci8jGrXCEP-r6LBxD8" : {
          "title" : "Marriage"
        },
        "-Lci9UNW80J2Jap_UHwj" : {
          "title" : "Visit"
        }
      },

我的firebase实时数据库如下所示。我想在同一按键下添加其他三个值,即纬度,经度和地址。

  mDatabase.child("users").child(mUserId).child("locs").push().child("title").setValue(text.getText().toString());

这在第一次活动中有效。在第二个活动中,我检索lat和long并将其分别保存在字符串lat和long中。现在,我希望将这两个值和addr保存在同一键下。

这是我的预期结果

"locs" : {
        "-Lci8jGrXCEP-r6LBxD8" : {
          "title" : "Marriage"
          "lat"   : "xxx.xxxxxx"
          "long"  : "xxx.xxxxxx"
          "addr"  : "Street 112 xxxx"
        },
        "-Lci9UNW80J2Jap_UHwj" : {
          "title" : "Visit"
          "lat"   : "xxx.xxxxxx"
          "long"  : "xxx.xxxxxx"
          "addr"  : "Street 1212 Flat 6"
        }
      },

1 个答案:

答案 0 :(得分:1)

您需要做两件事:

  • 确保第二个活动知道要更新的密钥。您可以通过将密钥从第一个活动传递到下一个活动(按意图或共享的首选项),或者通过在第二个活动中基于您知道其值的其他唯一属性对其进行查找来实现。 / li>
  • 更新该密钥的位置,而不是生成新密钥。您可以通过调用set()而不是child(key)并使用push()而不是Map<String, Object> values = new HashMap<String, Object>(); values.put("title", "new updated title"); values.put("newprop", "value of new prop"); mDatabase.child("users").child(mUserId).child("locs").child(key).updateChildren(values); 来做到这一点。因此:

    {{1}}