使用 firebase 过滤分页列表

2024-05-28

我正在尝试使用 firebase 和 swift 制作一个分页过滤列表(但请随意用您最喜欢的编程语言回答),而不过滤客户端上检索到的数据。

假设我有这个结构

matches
  match-1
    name: "Match 1"
    users
        user-1: "ok"
        user-2: true
  match-2
    name: "Match 2"
    users
        user-1: "ok"
        user-2: true
        user-3: true
  match-3
    name: "Match 3"
    users
        user-1: true
        user-2: true
        user-3: true
...

现在我想获取 user-1 的所有匹配项的分页列表,这些匹配项的值为“ok”

我正在做这样的事情

matchesRef
        .queryOrdered(byChild: "users/user-1")
        .queryEqual(toValue: "ok")
        .queryStarting(atValue: "<last-fetched-user-id>")
        .queryLimited(toFirst: 5)
        .observe(.value, with: { snapshot in

});

但它会导致崩溃,因为“无法调用 queryStartingAtValue:之前调用了 queryStartingAtValue 或 queryEqualToValue 后”

有什么建议么?


如果我没记错的话,你可以传入key作为第二个参数返回的第一个项目的queryStarting。来自文档 https://firebase.google.com/docs/reference/ios/firebasedatabase/api/reference/Classes/FIRDatabaseQuery#-querystartingatvaluechildkey(强调我的):

queryStartingAtValue:childKey:用于生成对此位置数据的有限视图的引用。这FIRDatabaseQuery返回的实例queryStartingAtValue:childKey将响应值大于 startValue 的节点处的事件,或者等于 startValue 并且键大于或等于 childKey.

所以在代码中将是:

matchesRef
    .queryOrdered(byChild: "users/user-1")
    .queryStarting(atValue: "ok", childKey: "<last-fetched-user-id>")
    .queryLimited(toFirst: 5)
    .observe(.value, with: { snapshot in
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 firebase 过滤分页列表 的相关文章

随机推荐