Firebase向已有子节点更新数据时重复创建节点的解决方法
问题解决:Firebase更新数据时重复创建子节点的修复
你的代码里存在一个容易忽略的细节错误,导致Firebase创建了新的同名子节点:
问题根源
路径字符串中/students前面多了一个空格:
// 错误写法:" /students" 前面有空格 DatabaseReference students= db.getReference("classes/"+classid+" /students");
这个空格会让实际路径变成classes/[班级ID]/ students(注意students前的空格),和数据库中原有无空格的students节点不是同一个路径,因此Firebase会创建新节点而非更新原有节点。
修正后的代码
// get class path from a fragment String classid=getIntent().getStringExtra("keyclsid"); dataholder obj =new dataholder(name,regNo,regDate,guardName,contactNo,address,schoolName); FirebaseDatabase db=FirebaseDatabase.getInstance(); // 修正路径:去掉/students前面的空格 DatabaseReference students= db.getReference("classes/"+classid+"/students"); // update to firebase students.child(regNo).setValue(obj);
额外验证建议
如果仍有问题,可以先打印完整路径,确认和数据库中已有节点路径完全一致:
Log.d("FirebasePath", "当前操作路径:"+students.toString());
同时确保传递的classid和数据库中班级节点的key完全匹配(无多余空格、大小写一致)。
内容的提问来源于stack exchange,提问作者Deneth Sankalpa
相关产品推荐
相关产品推荐

