有什么方法可以使用createQuery应用分组和分页?

时间:2018-09-27 12:29:25

标签: rethinkdb feathersjs feathers-hook

这样查询

http://localhost:3030/dflowzdata?$ skip = 0&$ group = uuid&$ limit = 2

和dflowzdata服务包含类似的数据,

[   {     “ uuid”:123456,     “ id”:1   },   {     “ uuid”:123456,     “ id”:2   },   {     “ uuid”:7890,     “ id”:3   },   {     “ uuid”:123456,     “ id”:4   },   {     “ uuid”:4567,     “ id”:5   } ]

像“寻找钩子”之前,

if (query.$group !== undefined) { 
  let value = hook.params.query.$group
  delete hook.params.query.$group
  const query = hook.service.createQuery(hook.params.query);
  hook.params.rethinkdb = query.group(value)
}

它给出正确的结果,但没有分页,就像我只需要两条记录,但它可以给我所有记录

结果是

{"total":[{"group":"123456","reduction":3},{"group":"7890","reduction":1},{"group":"4567","reduction":3}],"data":[{"group":"123456","reduction":[{"uuid":"123456","id":1},{"uuid":"123456","id":2},{"uuid":"123456","id":4}]},{"group":"7890","reduction":[{"uuid":"7890","id":3}]},{"group":"4567","reduction":[{"uuid":"4567","id":5}]}],"limit":2,"skip":0}

有人可以帮助我如何使用$ limit获得正确的记录吗?

1 个答案:

答案 0 :(得分:1)

根据the documentation on data types,在GROUPED_DATA上调用的 ReQL命令分别在每个组上运行。有关更多详细信息,请阅读group文档。因此,limit不适用于group的结果。

The page for group告诉您:要对所有组进行操作而不是对每个组进行操作,可以使用ungroup将分组流或分组数据转换为数组代表组的对象

因此ungroup将函数应用于group的结果:

r.db('db').table('table')
.group('uuid')
.ungroup()
.limit(2)