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

时间:2017-01-20 22:44:36

标签: android firebase-realtime-database firebase-authentication

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

注册时,该应用需要电子邮件,用户名和密码。我正在使用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();
                    }
                });

2 个答案:

答案 0 :(得分:3)

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

这将取代现有数据。如果要将值添加为新子项,则需要使用push(),这将生成唯一ID,然后插入新数据。请尝试下面的代码。

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

答案 1 :(得分:0)

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

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