android - 在 Android Firebase 数据库中写入新数据

标签 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);

但是当我转到我的 firebase 控制台时,我看到自动生成了一种我不需要的 ID,因为正如您在图像中看到的那样,我设置了自己的 ID。

enter image description here

有没有办法避免这种情况,并创建像图像中的第二个用户节点一样的节点??

注意:我手动添加的第二个用户节点

最佳答案

在这里直接回答您的问题是我建议的更改:

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 访问它。

关于android - 在 Android Firebase 数据库中写入新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39536517/

相关文章:

java - 在 Netbeans 中成功发送通知后如何获得 Firebase 响应?

javascript - 如何在 Firebase 中添加带有电子邮件和密码的用户名?

ios - Swift Tableview 从 Firebase 数据库加载数据

java - 意外的顶级异常

android - Android ADT 安装疑难解答

ios - Swift Firebase 链接两个节点

java - Android Firebase - 根据微调器更改来自 firebase 的 ListView 数据

java - BigDecimal 四舍五入不四舍五入

java - 通过 XML API 改造阅读列表<Item>

ios - 在 iOS 上安装 react-native-firebase 的问题