【问题标题】:Firebase set value rewriting the children- AndroidFirebase 设置值重写子项-Android
【发布时间】:2018-04-01 12:46:35
【问题描述】:

我正在使用 Firebase 实时数据库将数据保存在以下结构中。

root
|----email
       |---A
       |---B
       |---C

当我尝试使用 setValue() 将孩子添加到 email 时,一切都很好,所有现有的孩子都被覆盖了。

预期结构:

root
|----email
       |---A
       |---B
       |---C
       |---D
           |---D1
           |---D2
           |---D3

保存在 firebase 中的实际数据结构

root
|----email
       |---D
           |---D1
           |---D2
           |---D3

我也尝试过push().setValue(),但它正在创建一个唯一键,这在我的情况下不需要,数据结构应该如上。

我的代码:

DatabaseReference root=FirebaseDatabase.getInstance().getReference;
DatabaseReference dEmail=root.child("email");
DatabaseReference dTrack=dEmail.child("D");
Map<String, Object> transportStatus = new HashMap<>();
transportStatus.put("D1", "A");
transportStatus.put("D2", "B");
transportStatus.put("D3", "C");
transportStatus.put("D4", "D");
dTrack.setValue(transportStatus);

请帮忙。提前致谢。

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    我想建议使用 updateChildren,

        DatabaseReference root=FirebaseDatabase.getInstance().getReference;
       DatabaseReference dEmail=root.child("email");
       DatabaseReference dTrack=dEmail.child("D");
       Map<String, Object> transportStatus = new HashMap<>();
       transportStatus.put("D1", "A");
       transportStatus.put("D2", "B");
       transportStatus.put("D3", "C");
       transportStatus.put("D4", "D");      
      dTrack.updateChildren(transportStatus);
    

    【讨论】:

    • 工作。非常感谢。
    猜你喜欢
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多