代码之家  ›  专栏  ›  技术社区  ›  uzaysan

如何在FireBase数据库中更改密钥?

  •  0
  • uzaysan  · 技术社区  · 7 年前

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

    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 回复  |  直到 7 年前
        1
  •  0
  •   Alex Mamo    7 年前

    例如,您不能更改密钥的名称 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);
    }
    
    推荐文章