Android Firebase实时数据库中的分页

Android Firebase实时数据库中的分页,android,firebase-realtime-database,pagination,Android,Firebase Realtime Database,Pagination,我使用的是Firebase实时数据库,对NoSQL来说是个新手 我想通过一种休息的方法来度过所有的季节。类似于下面的代码段 @GetMapping(value = "seasons", params = {"page", "size"}) public ResponseEntity<List<SeasonDTO>> getAllSeasons(@RequestParam("page") int page, @RequestParam("size") int

我使用的是Firebase实时数据库,对NoSQL来说是个新手


我想通过一种休息的方法来度过所有的季节。类似于下面的代码段

 @GetMapping(value = "seasons", params = {"page", "size"})
    public ResponseEntity<List<SeasonDTO>> getAllSeasons(@RequestParam("page") int page, @RequestParam("size") int size) {
        ResponseEntity<List<FSeason>> fSeasons = DBHandle.retrieveDataList(FSeason.class, dbRef.child(FSeason.key).orderByKey().limitToFirst(page * size).limitToLast((page + 1) * size));
       ........
        List<SeasonDTO> map = modelMapper.map(fSeasons.getBody(), seasonDTOListType);
        return new ResponseEntity<>(map, HttpStatus.OK);
    }
但失败了。有人能告诉我如何正确地编写查询吗

FirebaseDatabase.getInstance(firebaseApp)
    .getReference("resources")
    .child(FSeason.key)
    .orderByKey()
    .startAt(id)
    .limit(size)
这里,
startAt(…)
将在数据库中设置光标。这些数据的顺序由
orderByKey()
函数定义,该函数按字母顺序排列数据。此外,
limit(…)
函数定义了每个查询要检索多少数据

以下是有关startAt(…)的官方文档:

创建约束为仅返回具有值的子节点的查询 大于或等于给定值,使用给定的orderBy 指令或优先级作为默认值

startAt(id)
中的
id
表示最后检索到的文档的id。因此,每次解析查询结果时,存储最后一个元素的id并将其用于下一个查询

FirebaseDatabase.getInstance(firebaseApp)
    .getReference("resources")
    .child(FSeason.key)
    .orderByKey()
    .startAt(id)
    .limit(size)