Firebase读取数据

时间:2017-11-18 11:48:51

标签: android firebase firebase-realtime-database

如何从以下提供的结构中获取firebase数据库的所有纬度和经度?无法在推送键节点内获取随机生成的数据,我无法捕获它。

DEVICE_ID-COORDINATES-> DATE-> PUSHKEY(EX:-KSHJDWFQ) - >现在获得CHILD LATITUDE和LONGITUDE。 先感谢您。 请帮忙

 {
  "Driver2" : {
    "1_353490067508933" : {
      "coordinates" : {
        "18-11-2017" : {
          "-KzDdfZtds7rxwETF4oN" : {
            "latitude" : "22.5735663",
            "longitude" : "88.4317749"
          },
          "-KzDl67WgnmKlYADN4sE" : {
            "latitude" : "22.5736048",
            "longitude" : "88.4316857"
          }
        }
      }
    }
  }

这就是我所做的

        final String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date());
        fb_ref = new Firebase(Config.FIREBASE_URL_STARTED);
        fb_ref.child("1_353490067508933").limitToLast(1).addValueEventListener(new com.firebase.client.ValueEventListener() {

            @Override
            public void onDataChange(com.firebase.client.DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()) {
                    //Driver post = dataSnapshot.getValue(Driver.class);
                    //Log.d("DataNodee", post.getDri_lat());
                    //Log.d("DataNodee", post.getDri_lng());
                    // updatemap(Double.parseDouble(post.getDri_lat()), Double.parseDouble(post.getDri_lng()));
                    for (com.firebase.client.DataSnapshot Driver : dataSnapshot.getChildren()) {
                        String childKey = Driver.getKey();
                        Log.d("childKey", childKey);
                        firebase_url_coordinates = "https://pool-xyz.firebaseio.com/Driver2/1_353490067508933/" + childKey + "/coordinates/" + date + ".json";
                        Log.d("json_url", firebase_url_coordinates);
                        makeJsonObjectRequest();
                    }
                    LCUtils.showToastShort(mContext, "Found");
                } else {
                    LCUtils.showToastShort(mContext, "Not Found");
                }
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {
            }
        });

1 个答案:

答案 0 :(得分:1)

试试这个:

DatabaseReference database = FirebaseDatabase.getInstance().getReference();
    DatabaseReference reference = database.child("Driver2").child("Device_id_here").child("coordinates").child("date_here");

reference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {  
     for(DataSnapshot data : dataSnapshot.getChildren()){
       String latitude=data.child("latitude").getValue().toString();
         String longs=data.child("longitude").getValue().toString();
         Log.i("latitude", latitude);
         Log.i("longtitude",longs);
    }
    }
     @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

所以根据这个:

DEVICE_ID-COORDINATES-> DATE-> PUSHKEY(EX:-KSHJDWFQ) - >现在获得儿童的劳顿和长寿。

您有id和日期,问题出在pushkey。因此,您必须查询child("date"),然后执行for循环,该循环将在pushkeys内迭代,从而为您提供longitudelatitude值。