Rad*_*oka 6 android firebase firebase-realtime-database
我一直在试图使用它的键从我的火力地堡数据库中检索的元素。我有一类用户和用户存在于数据库中。

我想用它的键用此方法来检索对象的用户:
public User getConnectedUserByUId(final String uid){
DatabaseReference database = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = database.child("users");
final List<User> connectedUser= new ArrayList<User>();
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot item: dataSnapshot.getChildren()) {
if (item.getKey()==uid)
{
User user= dataSnapshot.getValue(User.class);
connectedUser.add(user);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return connectedUser.get(0);
}
Run Code Online (Sandbox Code Playgroud)
但它返回一个空列表每次。
小智 0
在这里,您尝试仅检查已更改数据的非常具体的 ID。相反,请尝试使用 Firebase 查询filterByKey而不是使用您自己的函数来实现此目的。这是我用来尝试替换您的函数的示例代码:
DatabaseReference database = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = database.child("users");
Query connectedUser = ref.equalTo(uid);
connectedUser.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
// TODO: handle the post here
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
// ...
}
});
Run Code Online (Sandbox Code Playgroud)
如 Firebase 文档中所述: https: //firebase.google.com/docs/database/android/lists-of-data#filtering_data
| 归档时间: |
|
| 查看次数: |
10163 次 |
| 最近记录: |