如何获取表中列值最高的3个数据

时间:2016-09-13 07:51:16

标签: bookshelf.js knex.js

我正在使用knex和bookshelf,我的表包含作者,标题,内容,计数,每个数据都是这样的:

author: 'John Doe',
title: 'aaaaa',
content: 'aaaaaaaa'
count: 54,

我想根据count的值检索数据,我想得到4个具有最高计数值的数据。

如果我想要检索所有数据,我这样做:

router.get('/', (req, res) => {
   Article.forge().fetchAll().then(article => {
      res.json(article);
   })
}) 

我有什么方法可以做forge({ count: 3 data that has the highest count value })
我应该添加什么代码才能实现这个目标?

1 个答案:

答案 0 :(得分:4)

orderByfetchPage

结合使用
Article
  .orderBy('-count')
  .fetchPage({
    pageSize: 3
  })
  .forge()

这突出了我的团队移除书架并使用基本knex的原因。除非您想要获取相关模型,否则在没有ORM层的情况下处理更简单。 knex等效的knex代码是:

  knex('articles')
    .orderBy('count', 'desc')
    .limit(3)

哪个稍微简单,可以直接访问生成的行属性,即rows[0].id而不是rows[0].get('id')