【问题标题】:Android - Save list of object property with specific key on FirebaseAndroid - 在 Firebase 上保存具有特定键的对象属性列表
【发布时间】:2017-07-19 18:46:30
【问题描述】:

让我们考虑一个“UserBean”,其属性“emails”是ArrayList<EmailBean>

当保存在 Firebase 中时,就像:

"users" : {
   "$userID" : {
        "emails" : [
            "0" : {
                "type" : "first",
                "address" : "google@google.com",
                "private" : true
            },
            "1" : {
                "type" : "second",
                "address" : "firebase@firebase.com",
                "private" : false"
            }
        ],
        "name" : "Mitch"
    }
}

那么有没有可能实现这样的目标:

"users" : {
   "$userID" : {
        "emails" : [
            "first" : {
                "address" : "google@google.com",
                "private" : true
            },
            "second" : {
                "address" : "firebase@firebase.com",
                "private" : false
            }
        ],
        "name" : "Mitch"
    }
}

我宁愿不必一次保存每个地址。​​

也许有一个注释告诉 Firebase 将此属性用作键?

问候。

【问题讨论】:

    标签: android json firebase firebase-realtime-database


    【解决方案1】:

    我建议您使用以下代码:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference emailsRef = rootRef.child("users").child(userId).child("emails");
    ValueEventListener eventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                String type = ds.child("type").getValue(String.class);
                ds.child("type").getRef().getParent().setValue(type);
            }
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {}
    };
    emailsRef.addListenerForSingleValueEvent(eventListener);
    

    我对这段代码做了什么尝试?所以为了实现你想要的,首先我们得到了你的type键的值。然后我们在树中向上一步,并为每个特定节点设置您的 type 键的值。

    使用 type 的值而不是 0, 1 and so on,要完成工作,只需直接在引用上使用 removeValue() 方法从每个节点中删除 type key

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      相关资源
      最近更新 更多