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});})
下面是一个关于人们如何实现分页的有趣建议列表: