如何在android studio中将Firebase实时数据库子值移动到另一个子值中?
我想将Firebase实时数据库子值移动到android studio中的另一个子值中。(点数:25分为总计点数:来自同一用户uid如何在android studio中将Firebase实时数据库子值移动到另一个子值中?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我想将Firebase实时数据库子值移动到android studio中的另一个子值中。(点数:25分为总计点数:来自同一用户uid { "Users" : { "8xNAsCfc3Afta2lPHHsMWHEOw8C2" : { "points" : 25, "users" : "umar" } }, "wFinal" : { "8xNAsCfc3Afta2lPHHsMWHEOw8C2" : { "totalpoints"
{
"Users" : {
"8xNAsCfc3Afta2lPHHsMWHEOw8C2" : {
"points" : 25,
"users" : "umar"
}
},
"wFinal" : {
"8xNAsCfc3Afta2lPHHsMWHEOw8C2" : {
"totalpoints" : 0
}
}
}
我想要这个
{
"Users" : {
"8xNAsCfc3Afta2lPHHsMWHEOw8C2" : {
"points" : 0,
"users" : "umar"
}
},
"wFinal" : {
"8xNAsCfc3Afta2lPHHsMWHEOw8C2" : {
"totalpoints" : 25
}
}
}
您可以做的是在对您的
用户-userId
参考执行.setValue(points)
时,您还可以在wFinal
参考执行.setValue(points)
确保在.setValue()
之后添加一个完整的侦听器,以了解每个事务何时完成
伪代码
userRef.child(userId).child("points").setValue(0).addOnCompleteListener {
onComplete(...) {
wFinalRef.child(userId).child("totalPoints").setValue(points);
}
}
正如我在评论中所说,类似这样的事情
FirebaseDatabase.getInstance().getReference().child("Users").child(userUid).child("points").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
long points = dataSnapshot.getValue(Long.class);
//transfer the value
FirebaseDatabase.getInstance().getReference().child("wFinal").child(userUid).child("totalpoints").setValue(points);
//set the value at Users to 0
FirebaseDatabase.getInstance().getReference().child("Users").child(userUid).child("points").setValue(0);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
你可以这样做,你从第25点得到值,然后,将值设置为wfinal你在你这边做了什么吗?@Md.Asaduzzaman特别感谢你回答我的问题,我已经成功地实现了这个方法。这回答了你的问题吗?非常感谢你回答我的问题,我已经成功实现了我喜欢这种方法。