1.1.2 • Published 7 years ago
sequelize-cursor-paginate v1.1.2
Sequelize Cursor Paginate
Sequelize model decorator which provides cursor based pagination queries. Some motivation and background.
Forked from here, improves attributes usage to allow for include and exclude.
Model.scope('xyz').paginate() is not supported, you should use the scope option.
Install
npm install sequelize-cursor-paginateHow to use
Define a sequelize model:
// ...
const withPagination = require('sequelize-cursor-pagination');
const Counter = sequelize.define('counter', {
id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true },
value: Sequelize.INTEGER,
});
const options = {
methodName: 'paginate',
primaryKeyField: 'id',
};
withPagination(options)(Counter);The withPagination function has the following options:
- methodName, the name of the pagination method. The default value is
paginate. - primaryKeyField, the primary key field of the model. The default value is
id.
Call the paginate (default method name) method:
// ...
Counter.paginate({
where: { value: { $gt: 2 } },
limit: 10,
});The paginate method returns an object with following properties:
- results, the results of the query
- cursors, object containing the cursors' related data
- cursors.before, the first record in the result serialized
- cursors.after, the last record in the result serialized
- cursors.hasNext,
trueorfalsedepending on whether there are records after theaftercursor - cursors.hasPrevious,
trueorfalsedepending on whether there are records before thebeforecursor
The paginate method has the following options:
- where, the query applied to findAll call
- attributes, the query applied to findAll and select only some attributes
- include, applied to
findAllfor eager loading - attributes, applied to
findAllfor filtering returned fields or adding additional fields - limit, limit the number of records returned
- desc, whether to sort in descending order. The default value is
false. - before, the before cursor
- after, the after cursor
- paginationField, the field to be used for the pagination. The default value is the
primaryKeyFieldoption value. - raw, whether the query will return Sequelize Models or raw data. The default is
false. - paranoid, whether the query will return deleted models if the model is set to
paranoid: true. The default istrue. - scope, scope to use when querying - see scoped models
Run tests
yarn test