Java 从未从Firebase数据库检索到数据

Java 从未从Firebase数据库检索到数据,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,我一直在尝试通过id从数据库中检索对象 public List<User> getCreatorOfCandidature(String userId) { DatabaseReference database = FirebaseDatabase.getInstance().getReference(); DatabaseReference ref = database.child("users"); final List<User> users

我一直在尝试通过id从数据库中检索对象

public List<User> getCreatorOfCandidature(String userId)
{
    DatabaseReference database = FirebaseDatabase.getInstance().getReference();
    DatabaseReference ref = database.child("users");
    final List<User> users= new ArrayList<User>();
    Query query = ref.equalTo(userId);
    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            try{
                for (DataSnapshot data : snapshot.getChildren())
                {
                    User user = data.getValue(User.class);
                    setCreateurDeLaDemande(user);
                    users.add(user);
                }
            } catch (Throwable e) {
            }
        }
        @Override public void onCancelled(DatabaseError error) { }
    });
    return users;
}
public List getCreatorOfCandidature(字符串userId)
{
DatabaseReference database=FirebaseDatabase.getInstance().getReference();
DatabaseReference=database.child(“用户”);
最终列表用户=新的ArrayList();
查询=ref.equalTo(userId);
query.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
公共无效onDataChange(数据快照快照){
试一试{
对于(DataSnapshot数据:snapshot.getChildren())
{
User=data.getValue(User.class);
setCreateurDeLaDemande(用户);
用户。添加(用户);
}
}捕获(可丢弃的e){
}
}
@重写已取消的公共void(DatabaseError错误){}
});
返回用户;
}
这是我的DB的屏幕截图

我不确定问题是在onDataChange中的查询还是变量设置

请注意,在用户对象中,定义了所有getter和setter以及默认构造函数

***************************编辑****************************************** 这里我调用函数来检索用户

public void setCandidatureFinale(Candidature candidatureFinale)
{
    Demande demande = ((MyApplication) context.getApplicationContext()).demandeActuelle;
    demande.setCandidatureFinale(candidatureFinale);

    //recuperer le createur de la candidature pour la MAJ
    List<User> users=getCreatorOfCandidature(candidatureFinale.getUserId());
    User user=users.get(0);
    user.setNbIntervention(user.getNbIntervention()+1);
    user.setGainTotal(user.getGainTotal()+candidatureFinale.getPrixPropose());
    DatabaseReference database = FirebaseDatabase.getInstance().getReference();
    DatabaseReference ref = database.child("users").child(candidatureFinale.getUserId());
    ref.setValue(user);

    Toast.makeText((Activity) context, "La candidature a été acceptée", Toast.LENGTH_SHORT).show();
}
public void setCandidateFinale(候选资格最终结果)
{
Demande Demande=((MyApplication)context.getApplicationContext()).demandeActuelle;
demande.SetCandidateFinale(CandidateFinale);
//重新获得主要候选人资格
List users=getCreatorOfCandidature(candidateFinale.getUserId());
User=users.get(0);
user.setNbIntervention(user.getNbIntervention()+1);
user.setGainTotal(user.getGainTotal()+candidateFinale.getPrixPropose());
DatabaseReference database=FirebaseDatabase.getInstance().getReference();
DatabaseReference ref=database.child(“用户”).child(candidateFinale.getUserId());
参考设定值(用户);
Toast.makeText((活动)上下文,“候选资格aétéacceptée”,Toast.LENGTH_SHORT.show();
}
多谢各位

equalTo
无法以这种方式工作,它必须与orderBy*()链接

检查文档-

如果要查找具有特定UID的用户,请尝试以下操作

Query query = ref.orderByChild("yourUserIdField").equalTo(UID);
query.addChildEventListener(new ...)
无法以这种方式工作,它必须与orderBy*()链接

检查文档-

如果要查找具有特定UID的用户,请尝试以下操作

Query query = ref.orderByChild("yourUserIdField").equalTo(UID);
query.addChildEventListener(new ...)

发布你的数据库structure@HristoStoyanovdonereplace equalTo with child,ref.child(userId);很多人在从FirebasePost检索数据库时遇到困难structure@HristoStoyanovdonereplace equalTo with child,ref.child(userId);许多人在从Firebase检索时遇到困难,但仍然无法获取用户。当我调用函数getCreatorOfCandidature时,我传递了正确的键,但总是得到一个空列表。请看上面,我添加了对函数的调用,但仍然无法获取用户。当我调用函数getCreatorOfCandidature时,我传递了正确的键,但总是得到一个空列表。请看上面,我添加了对函数的调用