Sequelize model decorator which provides cursor based pagination queries
npm install sequelizejs-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).
npm install sequelizejs-cursor-pagination
yarn add sequelizejs-cursor-pagination
Define a sequelize model:
``javascript
// ...
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.id
* primaryKey, the primary key field of the model. The default value is .
Call the paginate (default method name) method:
`javascript`
// ...
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 nulltrue
* 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, or false depending on whether there are records after the after cursortrue
* cursors.hasPrevious, 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.primaryKeyField
* before, the before cursor
* after, the after curosr
* paginationField, the field to be used for the pagination. The default value is the option value.
```
yarn test