java - dataSnapshot.getChildren() 获取用户 ID 但不获取值

标签 java android firebase firebase-realtime-database

运行这段代码时:

private void getData(DataSnapshot dataSnapshot) {
    for(DataSnapshot ds : dataSnapshot.getChildren()){
        Log.d(TAG, "UserID inside getData: "+userID);
        Log.d(TAG, "User Name inside getData: "+ds.child(userID).child("name").getValue());
        Log.d(TAG, "DS inside getData: "+ds.child(userID));

        hospitalCity = String.valueOf(ds.child(userID).child("city").getValue());
        Log.d(TAG, "User city inside getData: "+ds.child(userID).child("city").getValue());

        break;
    }
}

日志显示:

UserID inside getData: Lsncj8CIsfTQXc7E425AtLuDI5v2
User Name inside getData: null DS inside getData: DataSnapshot { key = Lsncj8CIsfTQXc7E425AtLuDI5v2, value = null }

D/DonorList: User city inside getData: null

这是数据库:

title]

如您所见,它获取了键,但值为 null,尽管数据库显示其中有值。

最佳答案

为了获取Hospital节点下的数据,需要修改如下引用:

hospitalDatabase = FirebaseDatabase.getInstance().getReference();

hospitalDatabase = FirebaseDatabase.getInstance().getReference().child("Hospital");

要获取getData()方法中的数据,请使用以下代码:

private void getData(DataSnapshot dataSnapshot) {
    for(DataSnapshot ds : dataSnapshot.getChildren()) {
        String key = ds.getKey();
        String city = ds.child("city").getValue(String.class);
        String name = ds.child("name").getValue(String.class);
    }
}

ds.getKey() 将返回 userId

ds.child("city").getValue(String.class) 将返回城市。

ds.child("name").getValue(String.class) 将返回名称。

关于java - dataSnapshot.getChildren() 获取用户 ID 但不获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49581550/

相关文章:

javascript - 在 vuex + Firebase 应用程序中获取使用重定向方法登录的结果

java - 没有抛出此类方法异常?

java - 如何配置 Jackson 能够反序列化特殊集合?

android - 使用 AQuery(或其他)克隆 RelativeView

Android string.xml 和 style.xml 解析错误

android - 在 firebase 上进行查询

java - 如何将外部源代码传递给java中的线程?

java - 如何阻止Android应用程序开发Eclipse中的硬编码文本属性错误?

javascript - 如何使 JQuery 步进器/微调器按钮在按下时更快地通过列表?

java - Firebase Android 读取数据 -> 处理 -> 更新数据 "Global variable problem"