Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase实时数据库替换数据而不是添加新数据_Android_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Android Firebase实时数据库替换数据而不是添加新数据

Android Firebase实时数据库替换数据而不是添加新数据,android,firebase-realtime-database,firebase-authentication,Android,Firebase Realtime Database,Firebase Authentication,我正在尝试将数据插入Firebase实时数据库。我的应用程序的逻辑是在用户注册时,在数据库的用户列下创建一个包含用户名和密码的新字段 注册时,应用程序需要电子邮件、用户名和密码。我正在使用Firebase Auth来执行此操作。当我运行应用程序时,我可以成功注册并在数据库中插入值,但只要有新用户注册而不是创建新用户,就会在数据库中替换这些值。 如果我做错了什么,请帮助我。这是我的密码 firebaseAuth.createUserWithEmailAndPassword(email, passw

我正在尝试将数据插入Firebase实时数据库。我的应用程序的逻辑是在用户注册时,在数据库的用户列下创建一个包含用户名和密码的新字段

注册时,应用程序需要电子邮件、用户名和密码。我正在使用Firebase Auth来执行此操作。当我运行应用程序时,我可以成功注册并在数据库中插入值,但只要有新用户注册而不是创建新用户,就会在数据库中替换这些值。 如果我做错了什么,请帮助我。这是我的密码

firebaseAuth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        UserInformation userInformation = new UserInformation(username,password);
                        //checking if success
                        if(task.isSuccessful()){

                            databaseReference.child("users").setValue(userInformation);
                            Toast.makeText(MainActivity.this,"Successfully registered",Toast.LENGTH_LONG).show();
                            finish();
                            startActivity(new Intent(getApplicationContext(), ProfileActivity.class));
                        }else{
                            //display some message here
                            Toast.makeText(MainActivity.this,"Registration Error",Toast.LENGTH_LONG).show();
                        }
                        progressDialog.dismiss();
                    }
                });
firebaseAuth.createUserWithEmailAndPassword(电子邮件,密码)
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
UserInformation UserInformation=新用户信息(用户名、密码);
//检查是否成功
if(task.issusccessful()){
databaseReference.child(“用户”).setValue(用户信息);
Toast.makeText(MainActivity.this,“已成功注册”,Toast.LENGTH_LONG.show();
完成();
startActivity(新意图(getApplicationContext(),ProfileActivity.class));
}否则{
//在这里显示一些消息
Toast.makeText(MainActivity.this,“注册错误”,Toast.LENGTH_LONG.show();
}
progressDialog.disclose();
}
});
这将替换现有数据。如果要将该值作为新的子项添加,则需要使用
push()
,这将生成一个唯一的id,然后插入新数据。请尝试下面的代码

databaseReference.child("users").push().setValue(userInformation)

使用此查询。它肯定会开始为你工作

FirebaseDatabase.getInstance().getReference("users").child(user.getUid()).setValue(user);

当我们谈论用户时,我建议将它们存储在UID下,而不是推送ID下:
databaseReference.child(“用户”).child(task.getUser().getUid()).setValue(userInformation)
。这使得以后可以很容易地查找用户信息,并确保每个用户只存储一次(因为下次登录同一个用户时会给他们提供相同的UID)。在数据库中存储纯文本密码时要非常小心。这是一种非常糟糕的做法,也是一种快速失去用户信任的好方法。
FirebaseDatabase.getInstance().getReference("users").child(user.getUid()).setValue(user);