在验证用户并更新FirebaseUser
表后,我需要保存其他额外数据,如年龄,性别,地址等。我想通过创建用户节点并通过UID挂钩到FirebaseUser
来使用实时数据库。我的工作方式是否正确?如果有人能帮我理解,我将不胜感激。谢谢。
Firebase中的常见做法是为您的用户创建helper class
(model class
,POJO class
),这是实现此目标的核心方法:
public class User implements Serializable {
private String name;
private int age;
private String gender;
private String address;
private String email;
public User() {}
public User(String name, int age, String gender, String address, String email) {
this.name = name;
this.age = age;
this.gender = gender;
this.address = address;
this.email = email;
}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public int getAge() {return age;}
public void setAge(int age) {this.age = age;}
public String getGender() {return gender;}
public void setGender(String gender) {this.gender = gender;}
public String getAddress() {return address;}
public void setAddress(String address) {this.address = address;}
public String getEmail() {return email;}
public void setEmail(String email) {this.email = email;}
}
因为您需要为用户提供唯一标识符,所以uid
是您的最佳选择。您可以使用以下代码行获取uid
:
String uid = FirebaseUser.getInstance().getCurrentUser().getUid();
要将数据插入到数据库中,需要创建User类的对象。所以请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("users");
User user = new User("John", 25, "male", "101 Main Street", "[email protected]");
usersRef.child(uid).setValue(user);
在此,您只需使用公共设置器和getter来添加/获取Firebase数据库中的数据。
您的数据库看起来像这样:
Firebase-root
|
--- users
|
--- uid1
|
--- name: "John"
|
--- age: 25
|
--- gender: "male"
|
--- address: "101 Main Street"
|
--- email: "[email protected]"
这是正确的,要获得你可以使用的current user's unique ID:
FirebaseUser.getInstance().getCurrentUser().getUid();
然后,您可以使用该唯一ID作为密钥将有关用户的详细信息存储到Firebase实时数据库中,例如:
FirebaseUser user = FirebaseUser.getInstance().getCurrentUser();
String userId = user.getUid();
DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference("users");
HashMap<String, Object> userDetails = new HashMap<>();
message.put("name", "P. Sherman");
message.put("age", 50);
message.put("gender", "male");
message.put("address", "42 Wallaby Way, Sydney");
message.put("email", user.getEmail());
messagesRef.child(userId).setValue(userDetails);