java - firebase getValue 方法没有按应有的方式从节点检索值

标签 java android firebase firebase-realtime-database

在我的 firebase 数据库中,我有一个节点,它的子节点保存某个位置的纬度和经度,如下面的 json fragment 所示

{
  "DriversAvailable" : {
    "sfdqfkoxYjXB2YRDTfIaezWgkBd2" : {
      ".priority" : "dn5bpxwrtz",
      "g" : "dn5bpxwrtz",
      "l" : [ 33.7925271, -84.3881384 ]
    }

我使用以下代码将纬度和经度放入单独的变量中

driverLocationReferenceGetLocation = FirebaseDatabase.getInstance().getReference("DriversAvailable").child(driverFoundID);
driverLocationReferenceGetLocation.addValueEventListener(new ValueEventListener() {
     @Override
     public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
         for (DataSnapshot snapm: dataSnapshot.getChildren()) {
             Double latitude = (Double) snapm.child("0").getValue();
             Double longitude = (Double) snapm.child("1").getValue();

当我调试它时,它显示值 snapm 的值设置为 1={0=33.79, 1=-84.38},但由于某种原因,实际的纬度和经度变量为 null

最佳答案

不确定什么在您的代码中不起作用,但我绝对建议您监听您要获取其数据的精确节点:

driverLocationReferenceGetLocation = FirebaseDatabase.getInstance().getReference("DriversAvailable").child(driverFoundID);
driverLocationReferenceGetLocation.child("l").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot snapshot) {
        Double latitude = snapshot.child("0").getValue(Double.class);
        Double longitude = snapshot.child("1").getValue(Double.class);

关于java - firebase getValue 方法没有按应有的方式从节点检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56962431/

相关文章:

java - MySQL 语法错误 |您的 SQL 语法有错误;

java - 可运行中的 ConcurrentModificationException

java - Android 对象到 hashmap(在 ListView 上)

android - 权限被拒绝:android.Manifest.permission.READ_EXTERNAL_STORAGE

java - Android:Firebase 需要太多时间来获取数据

java - 是否可以通过编程方式设置引脚以进行蓝牙配对?

java - 在 Java 中将视频帧保存为静态图像

java - Java Servlet 容器在哪里

ios - 当应用程序关闭时,Rest Api Firebase 通知在 Swift 4 中不起作用

firebase - Flutter Firebase实时数据库在查询中获取对象键