我正在尝试在Firebase中存储下面显示的类
public class Riders {
String uberId;
String role;
double lat;
double lng;
String phone;
String request ;
使用下面的代码我已经能够将数据存储到firebase中。
dbRef = fbDbase.getReference("Riders") ;
uberId = riders.getUberId();
phone = riders.getPhone();
riders.setLat(uLatLng.latitude);
riders.setLng(uLatLng.longitude);
riders.setRequest("Active");
rowKey =dbRef.child(uberId).push().getKey();
dbRef.child(uberId).push().setValue(riders);
JSON数据导出在Initial json with proper data
下面I am facing a problem when I try to update the "Request" element value to Inactive.
1.
String str = uberId + "/" + rowKey ;
Map<String, Object> data = new HashMap<>();
data.put(str,"InActive");
dbRef.child(str).updateChildren(data);
The above code produces a structure as in the image [Incorrect Json ][1]
您可以观察到-L7S7dZuZD7kZrS7kILu是仅使用非活动值完全修改的原始密钥 被留下来。除此之外,还附加了一个带有新密钥的新节点。
下面的代码创建了一个完整的新节点。对于一个Id,我得到两个具有不同rowkey值的节点。
dbRef.child(uberId).child(rowkey).child("Request").setValue("Inactive");
问题是我们如何从android更新firebase中的特定数据项?
答案 0 :(得分:0)
我修改了推送节点的代码
DatabaseReference newDbRef = dbRef.child(uberId).push();
newDbRef.setValue(riders);
rowKey =newDbRef.getKey();
我的更新代码类似于
String str = uberId + "/" + rowKey + "/" + "request" ;
Map<String, Object> data = new HashMap<String, Object>();
data.put(str,"InActive");
dbRef.child(str).updateChildren(data);
现在没有创建重复的pushid 但是仍然没有将请求子项从“活动”更新为“非活动”。正如您从附加图像中看到的那样,请求子节点在updateChildren之后有一个全新的分支 request child node now has a seperate branch