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

Lor*_*ren 2 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
Run Code Online (Sandbox Code Playgroud)

这是我的查询.

mQuery = mFirebaseDbReference
    .child("listItems")
    .child("list_1_uid")
    .orderByChild("nameLowercase")
    .equalTo(true, "visible");
Run Code Online (Sandbox Code Playgroud)

我的查询没有返回数据.如果我删除.equalTo(true,"visible")语句,查询将返回整个字母顺序列表.

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

jon*_*dee 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);
Run Code Online (Sandbox Code Playgroud)