Java 在Firebase中切换child中的child
为了帮助您理解,我根据数据库引用的子级提供了一个带有简单键名和值的图像 我想切换两个childs的值+键 例如,子0具有新的子“keyOne”,其中键为“keyOne”,值为“valueOne”。。。Etc与1、2和3号孩子一起 - 我将如何切换“0”和“1”的孩子 换孩子,我的意思是,我想最终得到一个孩子 - 希望你们能理解我的意思。如果你现在还没有,我就给你最后一次机会 我希望将一个子项的键+值组合切换为另一个子项的键+值组合Java 在Firebase中切换child中的child,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,为了帮助您理解,我根据数据库引用的子级提供了一个带有简单键名和值的图像 我想切换两个childs的值+键 例如,子0具有新的子“keyOne”,其中键为“keyOne”,值为“valueOne”。。。Etc与1、2和3号孩子一起 - 我将如何切换“0”和“1”的孩子 换孩子,我的意思是,我想最终得到一个孩子 - 希望你们能理解我的意思。如果你现在还没有,我就给你最后一次机会 我希望将一个子项的键+值组合切换为另一个子项的键+值组合 谢谢 假设currentMembers节点是Firebase根目
谢谢 假设
currentMembers
节点是Firebase根目录的直接子节点,并且您的数据库如下所示:
要实现您的目标,请输入以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference currentMembersRef = rootRef.child("currentMembers");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String valueZero = dataSnapshot.child("0").child("keyZero").getValue(String.class);
String valueOne = dataSnapshot.child("1").child("keyOne").getValue(String.class);
dataSnapshot.child("0").child("keyZero").getRef().setValue(valueOne);
dataSnapshot.child("1").child("keyOne").getRef().setValue(valueZero);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
currentMembersRef.addListenerForSingleValueEvent(valueEventListener);
结果将是:
我有!这个解决方案的唯一问题(感谢您的回复)是价值是唯一会改变的东西。我一直在寻找键和值(如keyZero+valueZero)作为一对进行更改。可以将其视为一个用户名和一个全名,在列表的列组(“currentMembers”)之间切换。我的目标是在childs中同时切换用户名和全名(如果有意义的话)。再看看我的问题好吗?谢谢你@Alex Mamotore无法在Firebase中更改密钥的名称。没有用于执行此操作的API。如果需要更改密钥的名称,则需要复制该子级,更改名称并删除旧的名称。一个解决方案是创建一个排名系统,然后根据它查询数据。即使可以重命名密钥,也不会对您有任何帮助。数据库中的顺序与输出中的顺序不同。您认为我的回答对您有帮助吗?
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference currentMembersRef = rootRef.child("currentMembers");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String valueZero = dataSnapshot.child("0").child("keyZero").getValue(String.class);
String valueOne = dataSnapshot.child("1").child("keyOne").getValue(String.class);
dataSnapshot.child("0").child("keyZero").getRef().setValue(valueOne);
dataSnapshot.child("1").child("keyOne").getRef().setValue(valueZero);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
currentMembersRef.addListenerForSingleValueEvent(valueEventListener);