Sequelize model decorator which provides cursor based pagination queries. Some motivation and background.
The original repostory is here, but it seems not maintained (not sure).
Install
npm
npm install sequelizejs-cursor-pagination
yarn
yarn add sequelizejs-cursor-pagination
How 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',
primaryKey: 'id',
};
withPagination(options)(Counter);
The withPagination
function has the following options:
- methodName, the name of the pagination method. The default value is
paginate
. - primaryKey, 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
- count, number of rows that match the query condition, only if
rowCount
is set to true
, or it will be null - 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,
true
or false
depending on whether there are records after the after
cursor - cursors.hasPrevious,
true
or false
depending on whether there are records before the before
cursor
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
findAll
for eager loading - limit, limit the number of records returned
- rowCount, If set to true, it will use findAndCountAll instead of findAll. The default value is
false
. - desc, whether to sort in descending order. The default value is
false
. - before, the before cursor
- after, the after curosr
- paginationField, the field to be used for the pagination. The default value is the
primaryKeyField
option value.
Run tests
yarn test