1.0.6 • Published 8 years ago

bookshelf-pagemaker v1.0.6

Weekly downloads
11
License
MIT
Repository
github
Last release
8 years ago

☰ bookshelf-pagemaker ☰


bookshelf-pagemaker allows you to paginate results from bookshelf.js queries by extending your user defined model with several helper functions and replacing the fetchAll method with a custom paginate method. bookshelf-pagemaker also has built in support for handling express style request objects in order to sort, order, search, limit, and offset your results. In addition to all of these extended methods, the pagination formatting is also customizable based on your requirement. Out of the box bookshelf-pagemaker has pagination configurations for a simple paged pagination, offset pagination, and jQuery datatables pagination.


Documentation



Examples

Basic Example
var pm = require('bookshelf-pagemaker')(bookshelf);

var User = bookshelf.Model.extend({
    tableName: 'users'
});

pm(User).forge()
.limit(2)
.page(2)
.paginate()
.end()
.then(function(results) {
	console.log(JSON.stringify(results, null, '  '));
});
Results
{
    "previous": 1,
    "current": "2",
    "next": "3",
    "limit": 2,
    "pagesTotal": 6,
    "pagesFiltered": 6,
    "resources": [
        {
            "id": 3,
            "first_name": "Jack",
            "last_name": "Shephard",
            "watchLater": []
        },
        {
            "id": 4,
            "first_name": "James",
            "last_name": "Ford",
            "watchLater": []
        }
    ]
}

Express Request with datatables Example
var pm = require('bookshelf-pagemaker')(bookshelf);

var User = bookshelf.Model.extend({
    tableName: 'users'
});

function getUser(req, res, next) {
    pm(User, 'datatables').forge()
    .paginate({
        request: req
    })
    .end()
    .then(function(results) {
	    res.send(results);
        return next();
    });
}

server.get('/users', getUser);
...

Using Bookshelf Methods seamlessly
var pm = require('bookshelf-pagemaker')(bookshelf);

var User = bookshelf.Model.extend({
    tableName: 'users'
});

pm(User).forge()
.limit(2)
.offset(2)
.query(function(qb) {
    qb.where('name', 'LIKE', '%john%');
})
.paginate()
.end()
.then(function(results) {
	console.log(JSON.stringify(results, null, '  '));
});

Using transactions
var pm = require('bookshelf-pagemaker')(bookshelf);

var User = bookshelf.Model.extend({
    tableName: 'users'
});

bookshelf.transaction(function(t) {
    return pm(User).forge()
    .query(function(qb) {
        qb.where('name', 'LIKE', '%john%');
    })
    .paginate({ transacting: t })
    .end();
})
.then(function(results) {
	console.log(JSON.stringify(results, null, '  '));
});

Tools


Created with Nodeclipse (Eclipse Marketplace, site)

Nodeclipse is free open-source project that grows with your contributions.

1.0.6

8 years ago

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

9 years ago

1.0.0

9 years ago

0.1.3

9 years ago

0.1.2

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago