【问题标题】:Firebase not adding class to Real Time Data BaseFirebase 未向实时数据库添加类
【发布时间】:2020-06-24 09:55:15
【问题描述】:

我正在使用 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 侦听器,让我知道它是否失败。两个敬酒都没有执行。我确实在我的数据库上启用了读/写。

【问题讨论】:

  • 您是否尝试过在setValue() 操作中添加一个完整的侦听器,看看是否在logcat 中打印出一些内容?
  • @AlexMamo 是的,没有打印出来。我也在最后一行(users.child(...))上方尝试了一个日志,它打印得很好
  • 你的 onComplete 是否被触发了?
  • @AlexMamo 我不这么认为,我认为这是问题所在,但我不明白为什么。如果上一行中的函数被触发。
  • 您确定设备上有互联网连接吗?

标签: java android firebase firebase-realtime-database


【解决方案1】:

定义变量。

  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();
                                                }
                                            }
                                        });

}

【讨论】:

    猜你喜欢
    • 2021-10-04
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 2018-12-05
    • 2021-06-03
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多