rai*_*man 5 android firebase firebase-realtime-database
我在 Android 应用程序中使用 Firebase 数据库,每次注册用户时,我都会为此在数据库中存储一些值,我正在执行以下操作:
database = FirebaseDatabase.getInstance();
DatabaseReference mRef = database.getReference().child("Users").push();
FirebaseUser user = mAuth.getCurrentUser();
String userId = user.getUid();
mRef.child("User").child("age").setValue(selectedAge);
mRef.child("User").child("gender").setValue(finalGender);
mRef.child("User").child("userId").setValue(userId);
mRef.child("User").child("username").setValue(username);
Run Code Online (Sandbox Code Playgroud)
但是当我转到我的 firebase 控制台时,我看到自动生成了一种我不需要的 ID,因为正如您在图像中看到的那样,我设置了自己的 ID。
有没有办法避免这种情况,并创建像图像中第二个用户节点这样的节点?
注意:我手动添加的第二个用户节点
在这里直接回答您的问题是我建议的更改:
FirebaseDatabase database = FirebaseDatabase.getInstance();
FirebaseUser user = mAuth.getCurrentUser();
String userId = user.getUid();
DatabaseReference mRef = database.getReference().child("Users").child(userId);
mRef.child("age").setValue(selectedAge);
mRef.child("gender").setValue(finalGender);
mRef.child("username").setValue(username);
Run Code Online (Sandbox Code Playgroud)
我还建议您创建一个 Java 类来表示要存储在数据库中的任何用户数据。利用 Firebase 使用 Java 类读取/写入数据库的能力将使这些操作变得更加容易。例如,您将一个User类添加到您的项目中,如下所示:
public class User {
public double age;
public String gender;
public String userName;
//required default constructor
public User() {
}
public User(double age, String gender, String userName) {
this.age = age;
this.gender = gender;
this.userName = userName;
}
public double getAge() {
return age;
}
public void setAge(double age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
Run Code Online (Sandbox Code Playgroud)
通过使用 java 类写入数据库,您可以像这样更新写入操作:
FirebaseDatabase database = FirebaseDatabase.getInstance();
FirebaseUser user = mAuth.getCurrentUser();
String userId = user.getUid();
User user = new User(26, "M", "user001");
DatabaseReference mRef = database.getReference().child("Users").child(userId);
mRef.setValue(user);
Run Code Online (Sandbox Code Playgroud)
请注意uid,Java 对象中没有存储用户的字段。这取决于你,但我没有包括它有两个原因。首先,在数据库中,我们使用用户uid作为键将数据存储在唯一的位置。其次,由于您使用的是 Firebase 身份验证,因此在您的应用中,如果您需要获取当前登录用户的 ID,您可以通过FirebaseAuth.
| 归档时间: |
|
| 查看次数: |
12285 次 |
| 最近记录: |