Nim*_*nka 1 pagination android firebase-realtime-database
我正在使用 Firebase 实时数据库并且对 NoSQL 非常陌生。这是我的数据库结构示例。
我想通过 REST GET 方法获取所有季节。类似于下面的代码段。
@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);
}
Run Code Online (Sandbox Code Playgroud)
我尝试实现数据库查询,如:
FirebaseDatabase.getInstance(firebaseApp).getReference("resources").child(FSeason.key).orderByKey().limitToFirst(page * size).limitToLast((page + 1) * size)
Run Code Online (Sandbox Code Playgroud)
但失败了。有人可以告诉我 Query 应该如何正确编写。
FirebaseDatabase.getInstance(firebaseApp)
.getReference("resources")
.child(FSeason.key)
.orderByKey()
.startAt(id)
.limit(size)
Run Code Online (Sandbox Code Playgroud)
在这里,startAt(...)将在您的数据库中设置游标。这些数据的顺序由您的orderByKey()函数定义,该函数按字母顺序对数据进行排序。此外,该limit(...)函数定义了每个查询要检索的数据量。
这是关于startAt(...)的官方文档:
创建一个限制为仅返回值大于或等于给定值的子节点的查询,使用给定的 orderBy 指令或优先级作为默认值。
该id中startAt(id)表示最后一个检索到的文档的ID。因此,每次解析查询结果时,请存储最后一个元素的 id 并将其用于下一个查询。
| 归档时间: |
|
| 查看次数: |
3354 次 |
| 最近记录: |