使用 . equalTo(布尔值,字符串键)不起作用

Firebase query using . equalTo (boolean value, String key) not working

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

这是我的数据结构。

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");

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

关于如何检索我的过滤列表有什么建议吗?

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

由于此查询没有限制,解决方案是使用按 "visible" 排序的查询,然后对 nameLowercase 客户端进行任何额外排序,最终结果为:

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