使用Android

时间:2018-03-13 04:40:36

标签: android firebase

我正在尝试在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是仅使用非活动值完全修改的原始密钥 被留下来。除此之外,还附加了一个带有新密钥的新节点。

  1. 下面的代码创建了一个完整的新节点。对于一个Id,我得到两个具有不同rowkey值的节点。

        dbRef.child(uberId).child(rowkey).child("Request").setValue("Inactive"); 
    
  2. 问题是我们如何从android更新firebase中的特定数据项?

1 个答案:

答案 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