如何更改Firebase数据库中的密钥?

时间:2018-09-03 11:04:22

标签: android firebase firebase-realtime-database

我正在制作社交媒体应用。所有用户数据都是用户名对象的子级。 例如

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做到吗?

1 个答案:

答案 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);
}