使用Firebase查询。 equalTo(布尔值,String键)不起作用

时间:2016-06-09 21:25:09

标签: firebase firebase-realtime-database

我正在尝试查询我的数据,以检索按字母顺序排序的项目列表,并按标记为“可见”的项目进行过滤。

这是我的数据结构。

listItems
    list_1_uid
        item_1_uid
            name: "Item 01"
            nameLowercase: "item 01"
            visible: true
        item_2_uid
            name: "zItem 02"
            nameLowercase: "zitem 02"
            visible: false
        item_3_uid
            name: "aItem 03"
            nameLowercase: "aitem 03"
            visible: true

这是我的询问。

mQuery = mFirebaseDbReference
    .child("listItems")
    .child("list_1_uid")
    .orderByChild("nameLowercase")
    .equalTo(true, "visible");

我的查询不返回任何数据。如果我删除.equalTo(true," visible")语句,查询将返回整个按字母顺序排列的列表。

有关如何检索已过滤列表的任何建议?

1 个答案:

答案 0 :(得分:5)

Firebase中的查询与orderBy调用中指定的属性相关联。因此,此示例中的equalTo(boolean value, String key)调用是指nameLowercase,因此它会查询nameLowercase设置为true的所有项目。第二个参数引用项目的键(例如item_1_uid),可用于指定查询中的起始点。例如,这对于对结果进行分页非常有用。

由于此查询没有限制,因此解决方案是使用按“可见”排序的查询,然后在nameLowercase客户端进行任何其他排序,并获得最终结果:

mQuery = mFirebaseDbReference
    .child("listItems")
    .child("list_1_uid")
    .orderByChild("visible")
    .equalTo(true);