我正在尝试使用此代码检索用户收藏的所有食谱,但没有数据被重新检索
recipesQuery = mDatabase.child("recipes").orderByChild("favoritedBy").equalTo(getId());
这是我的结构:
{
"-KNnrgEmF8qCpsWiIMW4" : {
"favoriteCount" : 4,
"favoritedBy" : {
"0ZtxMXZ8iDV4u0POxu8n6cIwCX33" : true
},
"name" : "Recipe 1",
"recycleCount" : 0,
},
"-KNvq6Ts8RYxc0-O3B2t" : {
"favoriteCount" : 2,
"favoritedBy" : {
"0ZtxMXZ8iDV4u0POxu8n6cIwCX33" : true
},
"name" : "Recipe 2",
"recycleCount" : 0,
}
}
如果删除.equalTo()
方法,则会检索所有数据,但这不是我想要的。
我做错了什么?
答案 0 :(得分:1)
目前还没有基于除String,Boolean或Double之外的其他对象来过滤查询的方法。
我建议将数据库重组为类似的内容
{
"users": {
"userId1" : {
"name" : "User1",
"favorites": {
"-KNnrgEmF8qCpsWiIMW4" : true,
"-KNvq6Ts8RYxc0-O3B2t" : true
}
},
"userId2" : {
"name" : "User2",
"favorites": {
"-KNvq6Ts8RYxc0-O3B2t" : true
}
}
},
"recipes": {
"-KNnrgEmF8qCpsWiIMW4" : {
"favoriteCount" : 4,
"name" : "Recipe 1",
"recycleCount" : 0,
},
"-KNvq6Ts8RYxc0-O3B2t" : {
"favoriteCount" : 2,
"name" : "Recipe 2",
"recycleCount" : 0,
}
}
}
然后更容易获得特定用户收藏的食谱。
mDatabase.child("users").child(userid).child("favorites")