我在使用 firebase 进行分页时遇到问题我每次检索的结果限制为 5 个:通过示例向您展示问题会更容易:"myDb":{ "products": { "uid1" : { "name" : "hello", "uid" : "uid1", "size" : "1" } "uid2" : { "name" : "hello", "uid" : "uid2", "size" : "2" } "uid3" : { "name" : "hello", "uid" : "uid3", "size" : "34" } "uid4" : { "name" : "hello", "uid" : "uid4", "size" : "4" } "uid5" : { "name" : "hello", "uid" : "uid5", "size" : "15" } "uid6" : { "name" : "hello", "uid" : "uid6", "size" : "50" } }}当然,这不是我的真实数据,但现在让我向您展示我的查询,我正在使用 Angularfire。 getDatasByQuery(path:string, query:string){ return this.db.list(path, (ref) => { return (ref.orderByChild('name').startAt(query).limitToFirst(5)) }) }所以我实际上做的是获取name最后结果中属性的值,并用它进行另一个查询来分页。唯一的问题是这name等于"hello"一直。当然我可以增加限制,但主要问题保持不变我希望用户按name属性搜索并对结果进行分页,正如您此时可能已经理解的那样,我得到的唯一结果是第 5 个等于的结果name,"hello"并且永远不会达到第六个。所以first query ==> ['uid1', 'uid2', 'uid3', 'uid4', 'uid5'] => second query => exactly the same results非常感谢任何帮助,如果您需要更多解释,请告诉我。
1 回答
开满天机
TA贡献1786条经验 获得超13个赞
该startAt
方法采用可选的第二个参数,该参数是在第一个值有多个匹配项时启动的节点的键。
uid4
因此,如果您想在订购name
并过滤之后开始hello
,那就是:
ref.orderByChild("name").startAt("hello", "uid4");
这里uid4
是起始节点的键,通常称为消歧键。
添加回答
举报
0/150
提交
取消