sequelizejs-cursor-pagination
v2.0.1
Published
Sequelize model decorator which provides cursor based pagination queries
Downloads
6
Maintainers
Readme
Sequelize Cursor Pagination
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 totrue
, 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
orfalse
depending on whether there are records after theafter
cursor - cursors.hasPrevious,
true
orfalse
depending on whether there are records before thebefore
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