5.0.3 • Published 9 years ago
mongoose-paginate v5.0.3
mongoose-paginate
Pagination plugin for Mongoose
Note: This plugin will only work with Node.js >= 4.0 and Mongoose >= 4.0.
Installation
npm install mongoose-paginateUsage
Add plugin to a schema and then use model paginate method:
var mongoose = require('mongoose');
var mongoosePaginate = require('mongoose-paginate');
var schema = new mongoose.Schema({ /* schema definition */ });
schema.plugin(mongoosePaginate);
var Model = mongoose.model('Model', schema); // Model.paginate()Model.paginate(query, options, callback)
Returns promise
Parameters
[query]{Object} - Query criteria. Documentation[options]{Object}[select]{Object | String} - Fields to return (by default returns all fields). Documentation[sort]{Object | String} - Sort order. Documentation[populate]{Array | Object | String} - Paths which should be populated with other documents. Documentation[lean=false]{Boolean} - Should return plain javascript objects instead of Mongoose documents? Documentation[leanWithId=true]{Boolean} - IfleanandleanWithIdaretrue, addsidfield with string representation of_idto every document[offset=0]{Number} - Useoffsetorpageto set skip position[page=1]{Number}[limit=10]{Number}
[callback(err, result)]- If specified the callback is called once pagination results are retrieved or when an error has occurred
Return value
Promise fulfilled with object having properties:
docs{Array} - Array of documentstotal{Number} - Total number of documents in collection that match a querylimit{Number} - Limit that was used[page]{Number} - Only if specified or defaultpage/offsetvalues were used[pages]{Number} - Only ifpagespecified or defaultpage/offsetvalues were used[offset]{Number} - Only if specified or defaultpage/offsetvalues were used
Examples
Skip 20 documents and return 10 documents
Model.paginate({}, { page: 3, limit: 10 }, function(err, result) {
// result.docs
// result.total
// result.limit - 10
// result.page - 3
// result.pages
});Or you can do the same with offset and limit:
Model.paginate({}, { offset: 20, limit: 10 }, function(err, result) {
// result.docs
// result.total
// result.limit - 10
// result.offset - 20
});With promise:
Model.paginate({}, { offset: 20, limit: 10 }).then(function(result) {
// ...
});More advanced example
var query = {};
var options = {
select: 'title date author',
sort: { date: -1 },
populate: 'author',
lean: true,
offset: 20,
limit: 10
};
Book.paginate(query, options).then(function(result) {
// ...
});Zero limit
You can use limit=0 to get only metadata:
Model.paginate({}, { offset: 100, limit: 0 }).then(function(result) {
// result.docs - empty array
// result.total
// result.limit - 0
// result.offset - 100
});Set custom default options for all queries
config.js:
var mongoosePaginate = require('mongoose-paginate');
mongoosePaginate.paginate.options = {
lean: true,
limit: 20
};controller.js:
Model.paginate().then(function(result) {
// result.docs - array of plain javascript objects
// result.limit - 20
});Tests
npm install
npm testLicense
5.0.3
9 years ago
5.0.2
9 years ago
5.0.1
9 years ago
5.0.0
10 years ago
4.2.0
10 years ago
4.0.1
10 years ago
4.0.0
10 years ago
3.1.6
10 years ago
3.1.5
10 years ago
3.1.4
10 years ago
3.1.3
11 years ago
3.1.2
11 years ago
3.1.1
11 years ago
3.1.0
11 years ago
3.0.0
11 years ago
2.3.0
11 years ago
2.2.0
12 years ago
2.1.0
12 years ago
2.0.1
12 years ago
2.0.0
12 years ago
1.4.0
12 years ago
1.3.0
12 years ago
1.2.0
12 years ago
0.1.5
13 years ago
0.1.4
13 years ago
0.1.3
13 years ago
0.1.2
13 years ago
0.1.1
14 years ago
0.1.0
14 years ago
0.0.3
14 years ago
0.0.2
14 years ago