如何在 firebase 实时数据库中设置用户名

How to set users name in firebase realtime-database

当我创建新帐户时,其名称等于用户 UID 是否可以将其更改为自定义名称?

我的代码

mAuth.createUserWithEmailAndPassword(Email, Password)
    .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if(task.isSuccessful()){
                User user = new User(Name, LastName, Email);
                curentUser = Name + " " + LastName;

                FirebaseDatabase.getInstance().getReference("No server")
                        .child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                        .setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if(task.isSuccessful()){
                            Toast.makeText(MainActivity.this, "User has been registered successfully!", Toast.LENGTH_LONG).show();

                        }else{
                            Toast.makeText(MainActivity.this,"Failed to register! try again!", Toast.LENGTH_LONG).show();
                        }
                    }
                });
            }else{
                Toast.makeText(MainActivity.this,"Failed to register! try again!", Toast.LENGTH_LONG).show();
            }
        }
    });

看起来如何

您不能在不读取值的情况下更改 Firebase 实时数据库中现有值的键,将其写入新键下,然后删除旧键。

也就是说,您自己选择了用户对象的键:

FirebaseDatabase
  .getInstance().getReference()
  .child(FirebaseAuth.getInstance().getCurrentUser().getUid())
  .setValue(user)

child 方法包含您在 setValue 中设置的值的键。您为此使用当前用户的 UID。

您可以将其更改为您喜欢的任何值。例如,您可以将用户的电子邮件作为键 (see reference for current user object):

.child(FirebaseAuth.getInstance().getCurrentUser().getEmail())

注意:请参阅下面@puf 的评论,您可能希望在用作密钥时对电子邮件地址进行编码。