【问题标题】:Firebase Database Reference for Retrieving Data用于检索数据的 Firebase 数据库参考
【发布时间】:2017-06-14 00:54:41
【问题描述】:

我以用户 B (3wgmOhWlUUcyoBQXKZWnhw3K7Ik2) 身份登录,我想从数据库中检索用户 A (yKlWu19vhqQXfL2tDlBNfMSduMe2) 的位置数据。

我的数据库结构如下图。

{
  "3wgmOhWlUUcyoBQXKZWnhw3K7Ik2" : {
      "name" : "MAMA",
      "type" : "P"
  },
  "yKlWu19vhqQXfL2tDlBNfMSduMe2" : {
      "location" : {
          "latitude" : 3.0537728,
          "longitude" : 101.4826099
      },
      "name" : "AYAH NAN",
      "type" : "D"
  }
}

如何为 Firebase Database Ref 编写代码以检索位置数据?是这样吗?

databaseReference = FirebaseDatabase.getInstance().getReference().child("yKlWu19vhqQXfL2tDlBNfMSduMe2");

我应该通过 ChildListener() 检索还是直接使用 getValue() 检索?

【问题讨论】:

  • 要检索数据,您总是需要附加一个侦听器。由于您正在检索单个对象,因此您应该使用ValueEventListener。见firebase.google.com/docs/database/android/…
  • 经纬度数据在定位下。如何使用 ValueEventListener?

标签: android firebase firebase-realtime-database


【解决方案1】:

这是读取纬度的一种方法:

databaseReference = FirebaseDatabase.getInstance().getReference().child("yKlWu19vhqQXfL2tDlBNfMSduMe2");
databaseReference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
      double lat = dataSnapshot.child("location/latitude").getValue(Double.class);
    }

我强烈建议您阅读Firebase Database documentation on reading data,然后阅读Firebase codelab for Android

【讨论】:

  • 我了解您的导游先生。但是在我阅读了文档之后,我对您编写的最后一个代码“...... Double.class。我需要为 Double 创建另一个 java 类?或者是因为 double 纬度 = ...
  • Double 是一个现有的 Java 类。调用 getValue(Double.class) 告诉 Firebase 从快照中检索双精度值,然后将其存储在 lat 变量中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多