Neverending Puppy Marathon

    sequelize-pagination

    1.1.0 • Public • Published

    Sequelize Pagination

    Add a method on a sequelize model for pagination queries

    The project is inspired by sequelize-simple-pagination

    Quick start

    Define a sequelize model and add a pagination method:

    // Define a model
    const withPagination = require('sequelize-pagination');
     
    const Counter = sequelize.define('counter', {
      id: { type:  Sequelize.INTEGER, primaryKey: true, autoIncrement: true },
      value: Sequelize.INTEGER,
    });
     
    const options = {
      methodName: 'paginate', // the name of the pagination method
      primaryKey: 'id',       // the primary key field of the model
    };
     
    // Add a pagination method for the model
    withPagination(options)(Counter);

    Call the paginate (default method name) method:

    Counter.paginate({
      pageIndex: 0,
      pageSize: 10,
    })
    .then(pagination => {
        console.log(pagination.entities)
    })

    The paginate method returns a promise with resolve data of SequelizePaginationResult type.

    Use examples

    Predefine pagination

    withPagination({
        pageSize: 3,                            // Fix page size
    })(Counter);

    example/PredefinePagination.js

    Custom pagination

    Create a pagination with orderBy, order options

    async function paginateCounter(options) {
        const {orderBy, order, ...others} = options;
        const result = await Counter.paginate({
            orders: [[orderBy, order]],
            ...others,
        });
        return {orderBy, order, ...result};
    }

    example/CustomPagination-OrderBy.js

    API

    withPagination(options) - for adding pagination method

    withPagination() is a function generator for remember pagination configuration.

    options is a object with following properties:

    • methodName: the name of the pagination method. Default: paginate
    • primaryKey: the primary key field of the model. Default: id
    • oneBaseIndex: page index base. Pag index starts from 0 if oneBaseIndex is false. Page index starts from 1 if oneBaseIndex is true. Default: false
    • pageSize: Default: 1
    • where: the query applied to findAll and pass value directly to where
    • array: the query applied to findAll and add a primary key to order
    • attributes: the query applied to findAll and pass value directly to attributes
    • include: the query applied to findAll and pass value directly to include

    paginate(options) - execute a pagination query (suppose options.methodName is paginate)

    options is a object with following properties:

    • primaryDesc: primary key desc order. Default: false
    • pageSize: Default: 1
    • pageIndex: Pag index starts from 0 if oneBaseIndex is false. Page index starts from 1 if oneBaseIndex istrue.
    • where: the query applied to findAll and pass value directly to where
    • array: the query applied to findAll and add a primary key to order
    • attributes: the query applied to findAll and pass value directly to attributes
    • include: the query applied to findAll and pass value directly to include

    return a promise with resolve data of SequelizePaginationResult type.

    SequelizePaginationResult - pagination resolve data

    SequelizePaginationResult is a object type with following properties:

    • entities the results of the query
    • pageIndex page index
    • pageCount page count(total page amount)
    • pageSize page size for one page
    • count all entities for a model
    • where the where parameter of findAll
    • orders the orders parameter of findAll
    • attributes the attributes parameter of findAll
    • include the include parameter of findAll

    Run tests

    npm run test
    

    Install

    npm i sequelize-pagination

    DownloadsWeekly Downloads

    11

    Version

    1.1.0

    License

    none

    Unpacked Size

    12 kB

    Total Files

    4

    Last publish

    Collaborators

    • callme-zl