java - 无法在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;
}
}
解决方案
Hy,因为您每次都在引用新路径,即
FirebaseDatabase.getInstance().getReference("users").push();
这里 push() 将生成新值,而不是数据库中已经存在的值。结果 dataRef 不会获得路径,也不会更新任何信息。
reference = FirebaseDatabase.getInstance().getReference("users").push();
而不是 push() 先尝试任何静态数据,然后您就会知道实际问题出在哪里。
最后检索要更新的节点值,您将在 firebaseReference 中的“用户”之后使用该值。
推荐阅读
- c# - 如何在 Razor 视图中使用 foreach 循环显示连接的 sql 列值
- php - 向 loginController 添加逻辑
- math - 为什么 MAPLE 不评估我的方程中的积分和导数?
- r - 使用 R 进行 HTML 抓取 - 抓取特定节点时出错
- android - 如何在可打印区域中平均分隔项目
- android - 如何使滚动视图增长并向上滚动?
- amazon-web-services - 在 aws 中分离实时环境和测试环境的最佳方法
- c - C中测试用例的数字总和
- arrays - 请需要数组公式
- pattern-matching - 如何将关键字与值匹配,然后将值相应地分配给 Splunk 中的变量?