首页 > 解决方案 > 无法在firebase android java中更新配置文件值

问题描述

这是我正在使用的代码,但我无法更新 firebase 中的值。

数据库级别如下:

users-> userID: fname,phone,country

我正在尝试更新电话号码和姓名。我正在使用 Firebase 身份验证。

DatabaseReference reference;



 onCreate{ encloded in

 reference = FirebaseDatabase.getInstance().getReference("users").push();


 public void updateProfile(View view) {
    if (isNameChanged() || isPhoneChanged()) {
        //Toast.makeText(this, "Updated Successfully", Toast.LENGTH_SHORT).show();
    } else Toast.makeText(this, "No Change Observed", Toast.LENGTH_SHORT).show();
}

private boolean isPhoneChanged() {
    if (!pphone.equals(e_pphone.getText().toString())) {
        reference.child(userID).child("phone").setValue(e_pphone.getText().toString());
        pphone=e_pphone.getText().toString();
        return true;
    } else
        return false;

}
    private boolean isNameChanged() {
    if (!pname.equals(e_pname.getText().toString())) {

        final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
        if(firebaseUser!=null) {

            reference.child(userID).child("fname").setValue(e_pname.getText().toString());
            pname = e_pname.getText().toString();
            Toast.makeText(this, userID, Toast.LENGTH_SHORT).show();
        }
        return true;
    } else {
        Toast.makeText(this, "NOOOO "+pname, Toast.LENGTH_SHORT).show();
        return false;
    }
}

标签: javaandroidfirebasefirebase-realtime-database

解决方案


Hy,因为您每次都在引用新路径,即

 FirebaseDatabase.getInstance().getReference("users").push();

这里 push() 将生成新值,而不是数据库中已经存在的值。结果 dataRef 不会获得路径,也不会更新任何信息。

reference = FirebaseDatabase.getInstance().getReference("users").push();

而不是 push() 先尝试任何静态数据,然后您就会知道实际问题出在哪里。

最后检索要更新的节点值,您将在 firebaseReference 中的“用户”之后使用该值。


推荐阅读