我试图使用以下查询获取特定用户的用户详细信息:
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循环。
代码中的问题在于用户ID属性是在数据库userid
中调用的,而在查询中使用的是user_id
,这是不正确的。查询中字段的名称必须与数据库中的name字段匹配。要解决这个问题,只需更改:
.orderByChild("user_id")
致:
.orderByChild("userid")