Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-在Firebase上使用特定键保存对象属性列表 让我们考虑一个带有属性邮件的UserBean,这是一个ARAYLIST。_Android_Json_Firebase_Firebase Realtime Database - Fatal编程技术网

Android-在Firebase上使用特定键保存对象属性列表 让我们考虑一个带有属性邮件的UserBean,这是一个ARAYLIST。

Android-在Firebase上使用特定键保存对象属性列表 让我们考虑一个带有属性邮件的UserBean,这是一个ARAYLIST。,android,json,firebase,firebase-realtime-database,Android,Json,Firebase,Firebase Realtime Database,在Firebase中保存时,类似于: "users" : { "$userID" : { "emails" : [ "0" : { "type" : "first", "address" : "google@google.com", "private" : true }, "1" : {

在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将此属性用作键


尊敬。

我建议您使用以下代码:

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);
我用这个代码尝试了什么?所以为了实现你想要的,首先我们得到你的类型键的值。然后我们在树中得到一个步骤,并为每个特定节点设置partent和类型键的值

将type的值替换为0、1等等,要完成工作,只需在引用上直接使用removeValue方法从每个节点移除type键