java - 我想在同一个键下添加值

标签 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());

这适用于第一个 Activity 。在第二个 Activity 中,我检索经纬度并将其分别保存在字符串纬度和经度中。现在我希望将这两个值和地址保存在同一个键下。

这是我的预期结果

"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"
        }
      },

最佳答案

你需要做两件事:

  • 确保第二个 Activity 知道要更新的 key 。您可以通过将 key 从第一个 Activity 传递到下一个 Activity (在 Intent 或共享首选项中),或者根据您知道其值的其他一些独特属性在第二个 Activity 中查找它来执行此操作。
  • 更新该 key 的位置,而不是生成新 key 。为此,您可以调用 update() 而不是 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);
    

关于java - 我想在同一个键下添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55738200/

相关文章:

firebase - 如何在 firebase 托管的 webapp 中获取 firebase 函数 URL?

python - 如何在 Django 中处理 Firebase 云消息通知?

java - 从 Rest Web 服务返回 List<String>

java - 使用Spring和Jackson渲染JSON而不影响所有 View

java - 按钮在 Android 警报 View 中不起作用?

android - 如何在Flutter中访问Android的内部存储

android - MPAndroidChart/CombinedChart - 条形始终从零开始

android - 设置 gdb 和 eclipse 以从 Android 应用程序调试共享库后无法访问地址 0X1 处的内存

firebase - 当通过移动设备中的内置浏览器使用时,Firebase signInWithPopup会阻止身份验证/弹出窗口

java - 使用默认 .properties 文件配置传送 jar