Android Firebase实时数据库中的分页
我使用的是Firebase实时数据库,对NoSQL来说是个新手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
我想通过一种休息的方法来度过所有的季节。类似于下面的代码段
@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)