我正在尝试查询我的数据,以检索按字母顺序排序的项目列表,并按标记为“可见”的项目进行过滤。
这是我的数据结构。
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")语句,查询将返回整个按字母顺序排列的列表。
有关如何检索已过滤列表的任何建议?
答案 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);