java - 从未从 Firebase 数据库检索到数据

标签 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= 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;
}

这是我的数据库的屏幕截图 enter image description here

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

请注意,在 User 对象中,定义了所有 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();
}

谢谢。

最佳答案

equalTo

这样不行,它必须与 orderBy*() 链接

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

如果您正在寻找具有特定 UID 的用户,请尝试此操作

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

关于java - 从未从 Firebase 数据库检索到数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42715043/

相关文章:

javascript - 使用云函数和实时数据库通过链接 Promise 顺序读/写数据库

java - 如何确保 JOptionPane 在特定监视器上打开?

java - 来自数据存储谷歌应用引擎的端点查询

android - 在回复超时内未收到回复。 Smack 4.2.0 muc.join()

安卓 ImageView ?

ios - 快速从对象数组检索数据时出错

java - 将逗号与列表分开并在Java中显示在单行中

java - struts2中迭代两个List

java - 使用 gson 将自定义数组列表保存到 Sharedpreferences

java - Firebase 和 Android Studio,无法通过 : W/SyncTree: Listen at/message failed: DatabaseError: Permission denied