我正在制作社交媒体应用。所有用户数据都是用户名对象的子级。 例如
root:
+users:
+ricksanchez:
+name:"Rick Sanchez";
+email:"rick@sanchez.com";
+bio:"I'm super smart";
+followers:
+follower1:morty;
+follower2:summer;
....
如何在不丢失数据的情况下更改ricksanchez键?
Is it possible to rename a key in the Firebase Realtime Database?
我检查了这个问题,但是我在编码方面还很新。我猜那不是Java。你知道怎么用Java做到吗?
答案 0 :(得分:0)
您无法更改键的名称,比方说ricksanchez
。没有用于执行此操作的API。如果要更改键的名称,则肯定需要将该特定对象复制到另一个位置,更改名称,然后删除旧记录。但是在Firebase中无法立即更改密钥名称。
编辑:根据您的评论,请使用以下方法将一条记录从一个位置复制到另一个位置。
private void copyRecord(DatabaseReference fromPath, final DatabaseReference toPath) {
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
toPath.setValue(dataSnapshot.getValue()).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isComplete()) {
Log.d(TAG, "Success!");
} else {
Log.d(TAG, "Copy failed!");
}
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
fromPath.addListenerForSingleValueEvent(valueEventListener);
}