在 Firebase 中以 id 身份发送电子邮件



我可以在Firebase中使用用户的电子邮件作为id,而不是使用push()来生成child(user)id

我试过这个:

private void userData(String emai1, String pass, String bal) {
String id = emai1;
int balance=Integer.valueOf(String.valueOf(bal));
User user1 = new User(id,emai1,pass,balance);
databaseReference.child(id).setValue(user1);
}

用户类:

public class User {
private String email;
private int balance;
private String password;
private String id;
public User( String id,String email, String password , int balance) {
this.email = email;
this.balance = balance;
this.password = password;
this.id = id;
}

public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getBalance() {
return balance;
}
public void setBalance(int balance) {
this.balance = balance;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}

由于我使用了火碱身份验证,用户被注册,但他的信息不会被添加到火碱数据库中。

顺便说一句,在尝试这个之前,我正在使用push()来获取id并且一切正常,但我希望电子邮件作为id而不是生成一个新id(因为电子邮件无论如何都是唯一的。

您不能将电子邮件用作唯一键,因为它包含数据库中不允许的点.

由于您使用的是 Firebase 身份验证,因此只需使用用户唯一 ID 而不是push()

FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
String userId=user.getUid();

这将为您提供 id,然后您也可以在数据库中使用它。

DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("users").child(userId);
ref.child("name").setValue("name_here");
ref.child("email").setValue("email_here");

然后,您将拥有:

users
userId
name: name_here
email: email_here

还要检查这一点:

为什么要在 Firebase 中使用 UID?我应该使用它吗

最新更新