【发布时间】:2018-08-07 00:15:55
【问题描述】:
大家好。我在 Android Studio 和 Firebase 中度过了一段艰难的时光,每当我尝试使用 updateChildren 时,它都会不断替换旧的。我以为它会保留节点内的旧数据,这里是代码:
private void getClosestDriver() {
DatabaseReference driverLocation = FirebaseDatabase.getInstance().getReference().child("driversAvailable");
GeoFire geoFire = new GeoFire(driverLocation);
geoQuery = geoFire.queryAtLocation(new GeoLocation(pickupLocation.latitude, pickupLocation.longitude), radius);
geoQuery.removeAllListeners();
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(String key, GeoLocation location) {
if (!driverFound && requestBol) {
driverFound = true;
driverFoundID = key;
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users").child("Driver").child(driverFoundID).child("passengerRequest");
String passengerID = FirebaseAuth.getInstance().getCurrentUser().getUid();
HashMap map = new HashMap();
map.put("passengerRideID", passengerID);
map.put("destination", destination);
ref.updateChildren(map);
getDriverLocation();
mRequest.setText("Looking for Bus Location....");
}
}
我对 HasMap 的处理是否正确?
【问题讨论】:
-
在调用 updateChildren 之后,您希望保留什么?
-
如果你说它正在替换旧的,好的,但是想要实现什么?您想被添加为新孩子吗?
-
我想保留旧的
-
PassengerRequest 内部应该有一个名为passengerRideId 和Destination 的孩子,但每当我尝试保存新数据时,它都会不断替换旧的
-
我通过添加 .child(passengerID)
String passengerID = FirebaseAuth.getInstance().getCurrentUser().getUid(); DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users").child("Driver").child(driverFoundID).child("passengerRequest").child(passengerID);解决了这个问题
标签: java android firebase firebase-realtime-database