Firebase实时数据库Kotlin按子节点值查询返回Null求助
解决Firebase实时数据库查询QID为"PQ1"的问题
你的代码问题在于直接定位到了Question/QID节点,但实际数据结构中,QID是每个问题子节点(随机ID节点)下的属性,而非Question的直接子节点。正确的查询方式需要先指定排序的子节点,再进行过滤:
database.child("Question") .orderByChild("QID") // 指定按子节点QID进行过滤 .equalTo("PQ1") .limitToFirst(200) .get() .addOnSuccessListener { snapshot -> if (snapshot.exists()) { // 遍历所有匹配的问题节点 for (childSnapshot in snapshot.children) { Log.i("12345", "匹配的问题数据:${childSnapshot.value}") } } else { Log.i("12345", "未找到QID为PQ1的问题") } } .addOnFailureListener { exception -> Log.e("12345", "查询失败", exception) }
关键说明
orderByChild("QID"):告知Firebase基于每个问题节点下的QID属性执行过滤逻辑- 不要提前用
child("QID")定位节点,这会让查询指向错误路径,导致无法匹配到目标数据 - 添加
snapshot.exists()判断,可避免空数据返回时的日志混淆
内容的提问来源于stack exchange,提问作者Rahul R
相关产品推荐
相关产品推荐

