mongoose-paginate
Pagination plugin for Mongoose
Last updated 4 years ago by jokero .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install mongoose-paginate 
SYNC missed versions from official npm registry.

mongoose-paginate

Pagination plugin for Mongoose

NPM version Build status

Note: This plugin will only work with Node.js >= 4.0 and Mongoose >= 4.0.

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])

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} - If lean and leanWithId are true, adds id field with string representation of _id to every document
    • [offset=0] {Number} - Use offset or page to 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 documents
  • total {Number} - Total number of documents in collection that match a query
  • limit {Number} - Limit that was used
  • [page] {Number} - Only if specified or default page/offset values were used
  • [pages] {Number} - Only if page specified or default page/offset values were used
  • [offset] {Number} - Only if specified or default page/offset values 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 test

License

MIT

Current Tags

  • 5.0.3                                ...           latest (4 years ago)

29 Versions

  • 5.0.3                                ...           4 years ago
  • 5.0.2                                ...           4 years ago
  • 5.0.1 [deprecated]           ...           4 years ago
  • 5.0.0                                ...           5 years ago
  • 4.2.0                                ...           5 years ago
  • 4.0.1                                ...           5 years ago
  • 4.0.0                                ...           5 years ago
  • 3.1.6 [deprecated]           ...           5 years ago
  • 3.1.5 [deprecated]           ...           5 years ago
  • 3.1.3 [deprecated]           ...           6 years ago
  • 3.1.2 [deprecated]           ...           6 years ago
  • 3.1.1 [deprecated]           ...           6 years ago
  • 3.1.0 [deprecated]           ...           6 years ago
  • 3.0.0 [deprecated]           ...           6 years ago
  • 2.3.0 [deprecated]           ...           6 years ago
  • 2.2.0 [deprecated]           ...           6 years ago
  • 2.1.0 [deprecated]           ...           6 years ago
  • 2.0.1 [deprecated]           ...           6 years ago
  • 1.4.0 [deprecated]           ...           6 years ago
  • 1.3.0 [deprecated]           ...           6 years ago
  • 1.2.0 [deprecated]           ...           6 years ago
  • 0.1.5 [deprecated]           ...           8 years ago
  • 0.1.4 [deprecated]           ...           8 years ago
  • 0.1.3 [deprecated]           ...           8 years ago
  • 0.1.2 [deprecated]           ...           8 years ago
  • 0.1.1 [deprecated]           ...           8 years ago
  • 0.1.0 [deprecated]           ...           9 years ago
  • 0.0.3 [deprecated]           ...           9 years ago
  • 0.0.2 [deprecated]           ...           9 years ago
Downloads
Today 73
This Week 73
This Month 1,460
Last Day 26
Last Week 249
Last Month 1,170
Dependencies (1)
Dev Dependencies (4)
Dependents (137)

Copyright 2014 - 2016 © taobao.org |