【问题标题】:Firebase query using . equalTo (boolean value, String key) not workingFirebase 查询使用 . equalTo(布尔值,字符串键)不起作用
【发布时间】:2016-06-09 21:25:09
【问题描述】:

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

这是我的数据结构。

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") 语句,查询将返回我的整个按字母顺序排列的列表。

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

【问题讨论】:

    标签: firebase firebase-realtime-database


    【解决方案1】:

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

    【讨论】:

    • 非常感谢,帮了我很多
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    相关资源
    最近更新 更多