0.2.0 • Published 8 years ago

mongoose-efficient-pagination v0.2.0

Weekly downloads
1
License
Apache-2.0
Repository
github
Last release
8 years ago

mongoose-efficient-pagination

Build Status Coverage Status Dependency Status npm version

How it works

Use Case

Installation

npm install --save mongoose-efficient-pagination

API Reference

mongooseEfficientPagination

Using skip is not efficient for large data sets. Rather, we can achieve pagination by sorting by _id then telling mongo to use that _id as a starting point when returning the next page of records.

Example

// configure mongoose
var mongoose = require('mongoose');
var paginator = require('mongoose-efficient-pagination');

// optionally globally configure the default perPage value.
// this can be overridden in the paginate function itself.
paginator.perPage = 25;

Use it with a model...

var Customer = mongoose.model('Customer');
var sortOrder = -1;
var perPage = 10;
var startAfter = '52c1190207d5dbccda00000f'; // this value should be passed from your previous result set.

Customer.find({
    status: 'active'
})
.sort({
    createdAt: sortOrder, // this is up to you, sort by a field. I chose createdAt for this example.
})
.paginate(perPage, startAfter)
.exec();

mongooseEfficientPagination~paginator(perPage, nextID) ⇒

Can be called from the mongoose model prototype providing an easy way to paginate the result set of a query.

Kind: inner method of mongooseEfficientPagination
Returns: this

ParamTypeDefaultDescription
perPagenumber20number of records per page
nextIDObjectId(null)the id of the document which you will be starting after