限制Bookshelf模型上的Knex查询仅返回n条记录

时间:2014-11-26 18:23:39

标签: node.js bookshelf.js knex.js

我有以下代码,我使用splice函数只将前10个/ JSON对象传递给JADE模板。

app.get('/index', function(req, res) {
    new models.Condos()
      .query('orderBy', 'age', 'asc')
      .fetch()
      .then(function(names) {
        var name = names.splice(0,10);
        res.render('index', {
          names: name.toJSON()
        });
      });
  });
};

有没有办法我可以限制查询本身只返回前10个记录而不是拼接数组来做(使用偏移和限制参数)?

3 个答案:

答案 0 :(得分:2)

您可以编写一个knex查询来实现此目的,它将类似于:



app.get('/index', function(req, res) {
  knex.select('*')
    .from('condos')
    .limit(10)
    .then(function(names) {
      res.render(names);
    });
});




您还需要在路由器文件中要求knex。

答案 1 :(得分:0)

我正在寻找的是更多这些方面。

app.get('/index', function(req, res) {
    new models.Condos()
      .query('orderBy', 'age', 'asc')
      .query('limit','10')
      .fetch()
      .then(function(names) {
        var name = names.splice(0,10);
        res.render('index', {
          names: name.toJSON()
        });
      });
  });
};

答案 2 :(得分:0)

您可以使用Bookshelf中的分页plugin

models.Condos.fetchPage( {page:1, pageSize:10} )

注意:对于第一页,如果页面大小为10,则可以省略参数,只需

models.Condos.fetchPage()