Javascript 当子项相同时,在firebase中使用实时数据库分页

Javascript 当子项相同时,在firebase中使用实时数据库分页,javascript,firebase,firebase-realtime-database,angularfire,Javascript,Firebase,Firebase Realtime Database,Angularfire,我对firebase的分页有问题 我每次检索最多5个结果: 通过示例向您展示问题会更容易: "myDb":{ "products": { "uid1" : { "name" : "hello", "uid" : "uid1", "size" : "1"

我对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”
,永远不会到达第六个

所以

第一次查询==>['uid1','uid2','uid3','uid4','uid5']=>第二次查询=>结果完全相同


非常感谢您的帮助,如果您需要更多解释,请告诉我。

startAt方法采用可选的第二个参数,即当第一个值有多个匹配项时,要开始的节点的

因此,如果您想在
name
上订购并在
hello
上过滤后从
uid4
开始,那就是:

ref.orderByChild("name").startAt("hello", "uid4");

uid4
这里是要开始的节点的键,通常称为消歧键。

startAt方法采用可选的第二个参数,即如果第一个值存在多个匹配项,则要开始的节点的

因此,如果您想在
name
上订购并在
hello
上过滤后从
uid4
开始,那就是:

ref.orderByChild("name").startAt("hello", "uid4");
uid4
这里是要开始的节点的键,通常称为消歧键