来自:
拷贝如下:
Note: This plugin will only work with Node.js >= 4.2 and Mongoose >= 4.2 Installation npm install mongoose-paginate Usage 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]) Parameters
Return value Promise fulfilled with object having properties:
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 test |