提问者:小点点

DataSnapShot.getChildren()返回null


我试图使用以下查询获取特定用户的用户详细信息:

    DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
    Query query = reference
            .child("user_account_settings"))
            .orderByChild("user_id")
            .equalTo(getItem(position).getUser_id());
    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Log.d(TAG, "onDataChange: the fetched user id is " + getItem(position).getUser_id());
            for(DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
                //do stuff
            }

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

Firebase数据库屏幕截图

根据数据库,获取的用户id是正确的,并且它显然有子级,但是由于某种原因datasnapshot.getChildress()是空的,因此不允许我迭代foreach循环。


共1个答案

匿名用户

代码中的问题在于用户ID属性是在数据库userid中调用的,而在查询中使用的是user_id,这是不正确的。查询中字段的名称必须与数据库中的name字段匹配。要解决这个问题,只需更改:

.orderByChild("user_id")

致:

.orderByChild("userid")