【发布时间】:2018-06-19 20:56:42
【问题描述】:
【问题讨论】:
-
你是在使用node js在firebase中查询吗?
-
在 android studio 中没有 java。
标签: android firebase firebase-realtime-database
【问题讨论】:
标签: android firebase firebase-realtime-database
在您的情况下,使用 DRIVERID 之类的命名节点查询 firebase 将在获得对 DRIVERID 节点的引用后传递子名称。
firebaseRefTODRIVERID.child("Latlng").once("value", snap => {
console.log(snap.val())
})
你可以查看这个answer
【讨论】:
假设DRIVERID 是您的 Firebase 根的直接子级,要获取这些值,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference yourRef = rootRef.child("DRIVERID").child("LatLng");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
double Lat = dataSnapshot.child("Lat").getValue(Double.class);
double Lng = dataSnapshot.child("Lng").getValue(Double.class);
Log.d("TAG", Lat + " / " + Lng);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
yourRef.addListenerForSingleValueEvent(eventListener);
输出将是:
22.582798 / 88.35998
要获取Compass,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference yourRef = rootRef.child("DRIVERID");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
double Compasss = = dataSnapshot.child("Compasss").getValue(Double.class);
double Lat = dataSnapshot.child("LatLng").child("Lat").getValue(Double.class);
double Lng = dataSnapshot.child("LatLng").child("Lng").getValue(Double.class);
Log.d("TAG", Compasss + " / " + Lat + " / " + Lng);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
yourRef.addListenerForSingleValueEvent(eventListener);
输出将是:
54.5750122070312 / 22.582798 / 88.35998
适用于 OP 的代码行是:
HashMap Compasss = (HashMap) dataSnapshot.getValue(Boolean.parseBoolean("Compasss"));
【讨论】:
com.google.firebase.database.DatabaseException: Failed to convert value of type java.lang.Double to String:String Lat = dataSnapshot.child("LatLng").child("Lat").getValue(String.class);
.child("LatLng")。请再看一遍。现在好了吗?
我建议创建 2 个 Java 类:
那么你就可以使用:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference().child("DRIVERID");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Driver driver = datasnapshot.getValue(Driver.class);
//your data would be stored in this driver variable
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
rootRef.addListenerForSingleValueEvent(eventListener);
【讨论】: