Android-在Firebase上使用特定键保存对象属性列表 让我们考虑一个带有属性邮件的UserBean,这是一个ARAYLIST。
在Firebase中保存时,类似于: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" : {
"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键