Javascript Bookshelf.js的限制和偏移

Javascript Bookshelf.js的限制和偏移,javascript,node.js,bookshelf.js,Javascript,Node.js,Bookshelf.js,我正在使用下面的代码从表中获取所有结果: Search.forge() .fetchAll() .then(function (collection) { res.json({error: false, data: collection.toJSON()}); }) 但我需要分页,我想我可以用限制和偏移来完成,但到目前为止,我还没有找到任何可以为我提供限制和偏移选项的东西 这是可能的还是我必须用Knex构建我的查询?到目前为止,还没有bookshelf.js解决方案。使用k

我正在使用下面的代码从表中获取所有结果:

Search.forge()
  .fetchAll()
  .then(function (collection) {
    res.json({error: false, data: collection.toJSON()});
  })
但我需要分页,我想我可以用限制和偏移来完成,但到目前为止,我还没有找到任何可以为我提供限制和偏移选项的东西


这是可能的还是我必须用Knex构建我的查询?

到目前为止,还没有bookshelf.js解决方案。使用knex query builder可以很容易地实现这一点。

knex query builder应该会有所帮助,首先您必须调用
collection.query()
,以便书架点击knex query builder

  Models.forge()
            .query(function(qb) {
                //qb is knex query builder, use knex function here 
                qb.offset(0).limit(10);
            })
            .fetchAll().then(function(result) {
                res.json(result.toJSON());
            })

所以knex query builder function->现在可以免费使用了

这就是如何在书架上使用分页。考虑到您有一个Post模型,例如:

    Post.query(function (qb) {
            qb.orderBy('id', 'DESC');
            qb.limit(20);
    }).fetchAll()
      .then(function (collection) {

       })

但请注意,所有where子句必须出现在limit和orderBy子句之前。

自2018年6月起,尽管core Bookshelf.js仍不包括内置的分页支持,但仍存在一个问题。它允许您根据需要以“页面/页面大小”或“偏移/限制”格式表示分页,同时它似乎利用了knex的内置偏移和限制查询功能。代码示例:

Search.forge()
  .fetchPage({ offset: 30, limit: 10 })
  .then(function (collection) {
    res.json({error: false, data: collection.toJSON()});
  })

我现在就是这样做的:
Search.query().limit(分页限制)。offset(偏移)。然后(function(collection){res.json({error:false,data:collection});})
下面是一个关于人们如何实现分页的有趣建议列表: