Extension of Knex's query builder with paginate
method that will help with your pagination tasks.
To use this lib, first you will have to install it:
npm i knex-paginate --save
// or
yarn add knex-paginate
Then, add the following lines to your Knex set up:
const knex = require('knex')(config);
const { attachPaginate } = require('knex-paginate');
attachPaginate();
.paginate(params: IPaginateParams): Knex.QueryBuilder<any, IWithPagination<TResult>>;
interface IPaginateParams {
perPage: number,
currentPage: number,
isFromStart?: boolean,
isLengthAware?: boolean,
}
interface IWithPagination<T = any> {
data: T;
pagination: IPagination;
}
interface IPagination {
total?: number;
lastPage?: number;
currentPage: number;
perPage: number;
from: number;
to: number;
}
const result = await knex('persons')
.paginate({ perPage: 10, currentPage: 2 });
// result.data - will hold persons data
// result.pagination - will hold pagination object
pagination
objectKey | Value |
---|---|
perPage | Items per page. |
currentPage | Current page number. |
from | Counting ID of the first item of the current page. |
to | Counting ID of the last item of the current page. |
Returned if isLengthAware == true
or currentPage == 1
or isFromStart == true
:
Key | Value |
---|---|
total | Total items that the full query contains. |
lastPage | Last page number. |
This lib got inspiration from knex-paginator
.