java - 无法使用 orderByChild 方法对来自 firebase 的数据进行排序
问题描述
您好我正在尝试实时查询数据。我的数据库结构如下所示:
{
"Businesses": {
"-MW_bnEkz0ZjRlgpaF5V": {
"name": "business 1",
"users": {
"8baHUbgQlbeiw9ydGHp6qZHm59I2": 0,
"Wcaa9RQTJIPh8jhFHs0S4laLcPD3": 1
}
},
"-MW_cYkt0hqhu0YSVQ_q": {
"name": "business 1",
"users": {
"Wcaa9RQTJIPh8jhFHs0S4laLcPD3": 0
}
}
},
"Users": {
"8baHUbgQlbeiw9ydGHp6qZHm59I2": {
"name": "user 1",
"businesses": {
"-MW_bnEkz0ZjRlgpaF5V": 0
}
},
"Wcaa9RQTJIPh8jhFHs0S4laLcPD3": {
"name": "user 1",
"businesses": {
"-MW_cYkt0hqhu0YSVQ_q": 0,
"-MW_bnEkz0ZjRlgpaF5V": 1
}
}
}
}
我只想获取users
子项下具有等于 0的特定用户 ID 的企业
我试过这个:
private void listenToBusinessesUserJoinedTo(String userId){
Query query = FirebaseDatabase.getInstance().getReference("Businesses");
query.orderByChild("users/"+ userId).equalTo(User.JOINED); // User.JOINED = 0
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
businessesUserJoinedList.clear();
if (dataSnapshot.exists()){
for (DataSnapshot postSnapShot : dataSnapshot.getChildren())
businessesUserJoinedList.add(postSnapShot.getValue(Business.class));
}
updateUI();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
当我通过时8baHUbgQlbeiw9ydGHp6qZHm59I2
,userId
我会取回Businesses
子项下的所有数据,而不仅仅是带有 id 的业务
-MW_bnEkz0ZjRlgpaF5V
。
. 我做错了什么?
解决方案
推荐阅读
- java - 测试启用了 spring security oauth2login 的应用程序抛出 IllegalArgumentException: clientRegistrationRepository cannot be null
- android - 在 Android Studio (Kotlin) 中设置增量和减量限制
- android - 作业调度程序 Android
- c++ - c++图片旋转90度
- flutter - Flutter:AnimatedList动画曲线
- node.js - Sequelize 查询 Where 不相等和其他条件
- c# - Azure SQL C# 后端查询浮点导致“内部服务器错误”
- discord.py - 如何使用用户 ID 踢、禁止和取消禁止用户
- java - 如何在不生成代码的情况下使用 Jooq insert ...在 MySQL 中返回?
- python - 有效的“序列对齐”比较两个集合列表以查找匹配项 - python