首页 > 解决方案 > Firebase 未向实时数据库添加类

问题描述

我正在使用 Firebase 进行登录,但我希望将用户也添加到实时数据库中,这样我就可以将用户与更多数据链接起来。

当用户注册时,我可以看到该用户已添加到 Firebase 的身份验证部分,并且该用户能够登录,但它没有被添加到实时数据库中。

这是我的代码

db = FirebaseDatabase.getInstance();
users = db.getReference("Users");

User user = new User();
user.setEmail((editEmail.getText().toString()));
user.setPassword((editPass.getText().toString()));
user.setName((editName.getText().toString()));
user.setPhone(editPhone.getText().toString());


users.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
    .setValue(user)

我还使用 Toasts 设置了一个 onSuccess/fail 监听器,让我知道它是否失败。两个敬酒都没有执行。我确实在我的数据库上启用了读/写。

标签: javaandroidfirebasefirebase-realtime-database

解决方案


定义变量。

  private DatabaseReference userRef;         

在 OnCreate 方法中。

userRef = FirebaseDatabase.getInstance().getReference().child("Users");

在注册按钮中

String getUserName = usernameEditText.getText.toString;
String getBio = bioEditText.getText.toString;

//你应该使用验证

if(getUserName.equals("")
   {
    usernameEditText.setError("Field Required");
   }
   else if(getBio.equals("")
   {
    bioEditText.setError("Field Required");
   }

   else
    {
                            
    final HashMap<String , Object> profileMap = new HashMap<>();
                        profileMap.put("uid" , FirebaseAuth.getInstance().getCurrentUser().getUid());
                        profileMap.put("name" , getUserName);
                        profileMap.put("status" , getBio);
    
    
    
    
     userRef.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                                        .updateChildren(profileMap)
                                        .addOnCompleteListener(new OnCompleteListener<Void>()
                                        {
                                            @Override
                                            public void onComplete(@NonNull Task<Void> task)
                                            {
                                                if (task.isSuccessful())
                                                {
                                                    Log.v("Profile Updated" , "Profile Updated Successfully");
                                                    Intent intent = new Intent(SettingsActivity.this , MainActivity.class);
                                                    startActivity(intent);
                                                    finish();
        
                                                    progressDialog.dismiss();
                                                    Toast.makeText(SettingsActivity.this, "Your profile Info has been updated", Toast.LENGTH_SHORT).show();
                                                }
                                            }
                                        });

}


推荐阅读