按子节点的值排序数据 - Firebase

时间:2016-08-01 03:04:35

标签: android firebase firebase-realtime-database

我正在尝试使用此代码检索用户收藏的所有食谱,但没有数据被重新检索

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()方法,则会检索所有数据,但这不是我想要的。

我做错了什么?

1 个答案:

答案 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")
相关问题