Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Mongoose.js (Node.js & MongoDB) Document Query Pagination
JavaScript

README.md

mongoose-paginate

NPM version NPM downloads Circle CI Static Analysis MIT License Slack

mongoose-paginate is a plugin for Mongoose schemas to easily add paginated queries and results. This plugin is to be used in combination with view pagination middleware such as express-paginate.


NOTICE: Versions > 3.1.4 are deprecated and unpublished from NPM due to a bad commit. Please use version 3.1.3 for no breaking changes or upgrade to the latest stable 4.0.0 release (see below documentation).

Index

Install

npm install -S mongoose-paginate

Usage

This plugin must first be added to a schema:

var mongoosePaginate = require('mongoose-paginate');

MySchema.plugin(mongoosePaginate);

MySchema will have a new function called paginate (e.g. MySchema.paginate()).

MySchema.paginate(query, options, callback)

Arguments

  • query - An object for the Mongoose query.
  • options - An object with options for the Mongoose query, such as sorting and population
    • page - Default: 1
    • limit - Default: 10
    • columns - Default: null
    • sortBy - Default: null
    • populate - Default: null
    • lean - Default: null
  • callback(err, results, pageCount, itemCount) - A callback which is called once pagination results are retrieved, or when an error has occurred.

Examples

// basic example usage of `mongoose-pagination`
// querying for `all` {} items in `MySchema`
// paginating by second page, 10 items per page (10 results, page 2)

var mongoosePaginate = require('mongoose-paginate');

MySchema.plugin(mongoosePaginate);

MySchema.paginate({}, {
  page: 2, limit: 10
}, callback);
// advanced example usage of `mongoose-pagination`
// querying for `{ columns: 'title', { populate: 'some_ref' }, { sortBy : { title : -1 } }` items in `MySchema`
// paginating by second page, 10 items per page (10 results, page 2)

MySchema.paginate(
  {},
  {
    page: 2,
    limit: 10,
    columns: 'title',
    populate: 'some_ref',
    sortBy: {
      title: -1
    },
    lean: true
  },
  callback
);
// populating more than one ref

MySchema.paginate({}, {
  page: 2,
  limit: 10,
  columns: 'title',
  populate: [ 'some_ref', 'other_ref' ],
  sortBy: {
    title: -1
  },
  lean: true
}, callback);
// selecting specific field for population
// <http://mongoosejs.com/docs/api.html#query_Query-populate>

MySchema.paginate({}, {
  columns: 'title',
  populate: [
    {
      path: 'some_ref',
      select: 'field_a field_b'
    },
    'other_ref'
  ],
  sortBy: {
    title: -1
  },
  lean: true
}, callback);

Tests

npm test

Contributors

License

MIT

Something went wrong with that request. Please try again.