1.1.0 • Published 8 years ago
sequelize-pagination v1.1.0
Sequelize Pagination
Add a method on a sequelize model for pagination queries
The project is inspired by sequelize-simple-pagination
Quick start
Define a sequelize model and add a pagination method:
// Define a model
const withPagination = require('sequelize-pagination');
const Counter = sequelize.define('counter', {
id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true },
value: Sequelize.INTEGER,
});
const options = {
methodName: 'paginate', // the name of the pagination method
primaryKey: 'id', // the primary key field of the model
};
// Add a pagination method for the model
withPagination(options)(Counter);Call the paginate (default method name) method:
Counter.paginate({
pageIndex: 0,
pageSize: 10,
})
.then(pagination => {
console.log(pagination.entities)
})The paginate method returns a promise with resolve data of SequelizePaginationResult type.
Use examples
Predefine pagination
withPagination({
pageSize: 3, // Fix page size
})(Counter);example/PredefinePagination.js
Custom pagination
Create a pagination with orderBy, order options
async function paginateCounter(options) {
const {orderBy, order, ...others} = options;
const result = await Counter.paginate({
orders: [[orderBy, order]],
...others,
});
return {orderBy, order, ...result};
}example/CustomPagination-OrderBy.js
API
withPagination(options) - for adding pagination method
withPagination() is a function generator for remember pagination configuration.
options is a object with following properties:
- methodName: the name of the pagination method. Default:
paginate - primaryKey: the primary key field of the model. Default:
id - oneBaseIndex: page index base. Pag index starts from 0 if
oneBaseIndexisfalse. Page index starts from 1 ifoneBaseIndexistrue. Default:false - pageSize: Default: 1
- where: the query applied to findAll and pass value directly to where
- array: the query applied to findAll and add a primary key to order
- attributes: the query applied to findAll and pass value directly to attributes
- include: the query applied to findAll and pass value directly to include
paginate(options) - execute a pagination query (suppose options.methodName is paginate)
options is a object with following properties:
- primaryDesc: primary key desc order. Default: false
- pageSize: Default: 1
- pageIndex: Pag index starts from 0 if oneBaseIndex is
false. Page index starts from 1 if oneBaseIndex istrue. - where: the query applied to findAll and pass value directly to where
- array: the query applied to findAll and add a primary key to order
- attributes: the query applied to findAll and pass value directly to attributes
- include: the query applied to findAll and pass value directly to include
return a promise with resolve data of SequelizePaginationResult type.
SequelizePaginationResult - pagination resolve data
SequelizePaginationResult is a object type with following properties:
- entities the results of the query
- pageIndex page index
- pageCount page count(total page amount)
- pageSize page size for one page
- count all entities for a model
- where the
whereparameter offindAll - orders the
ordersparameter offindAll - attributes the
attributesparameter offindAll - include the
includeparameter offindAll
Run tests
npm run test