2017-03-10 79 views
1

我一直在试图通过其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; 
} 

这是我的DB的截图 enter image description here

我不知道,如果问题是onDataChange中的查询或变量设置。

请注意,在用户对象中,定义了所有获取器和设置器以及默认构造器。

***************************编辑****************** ************************ 在这里,我打电话给我的函数来检索用户。

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(); 
} 

谢谢。

+0

发布你的数据库结构 –

+0

@HristoStoyanov完成 – RadHisoka

+0

用child替换equalTo,ref.child(userId); –

回答

0
equalTo 

难道不是这样的,它必须与ORDERBY *()被链接

检查文档 - https://firebase.google.com/docs/reference/js/firebase.database.Query

如果你正在寻找一个特定的UID用户,试试这个

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

仍然没有收到用户。当我调用函数** getCreatorOfCandidature **时,我传递正确的键和所有,但总是得到一个空列表。请看上面,我添加了该函数的调用 – RadHisoka