要直接在这里回答你的问题是我建议的变化:
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);
我还建议你创建一个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;
}
}
通过使用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);
公告不存在Java对象中的商店用户的uid
没有字段。这取决于你,但我没有包括它有两个原因。首先,在数据库中,我们使用用户的uid
作为将数据存储在唯一位置的密钥。其次,由于您使用的是Firebase身份验证,如果您需要获取当前登录用户的ID,则可以在您的应用中通过FirebaseAuth
访问它。
非常感谢,在行中:DatabaseReference mRef = database.getReference()。child(“Users”)。child(userID); 我想你的意思是userId对吗? ,因为我看不到用户ID在哪里声明。 – rainman
是的,没错,应该是“userId” –
好的,谢谢我在这里有其他问题:http://stackoverflow.com/questions/39550149/check-if-user-is-authtificated-for-first-time -in-firebase-google-authentificatio, 如果您有任何想法 – rainman