1.1.2 • Published 5 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-paginate
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',
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,
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 - attributes, applied to
findAll
for 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
primaryKeyField
option 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