Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@tfarras/nestjs-typeorm-pagination

tfarras831.1.2TypeScript support: included

Extension for simple pagination of TypeORM entities

nestjs, typeorm, pagination, paginate, filtration, filter, entity, query, request

readme

NestJS TypeORM Pagination

Installation

npm install @tfarras/nestjs-typeorm-pagination

Pagination Query params

  • _start - from which row to start on fetch
  • _limit - how many rows to take
  • _sortBy? - column for sorting
  • _order? - order for sorting. Accepted values: 1 | -1 | ASC | DESC

Filtration

You can filter your data by passing columns and values as query params. For the moment we support Equal and In operator of typeorm.

Usage of Equal

To filter data with Equal operator, you can simply add a parameter like column=value

Examples:
id=1
`email=farrastaimoor@gmail.com<br />country=MD`

Usage of In

To filter data with In operator, you can add more than one time parameter like column=value

Examples:
id=1&&id=2&&id=3
country=MD&&country=SE&&country=US


Usage

Extend your entity from PaginateableBaseEntity :

@Entity({ name: 'user' })
export class UserEntity extends PaginateableBaseEntity {

Add parameter decorator to your controller method :

@Get()
getMany(
  @PgParams() pg: PaginationParams,
) {...}

And now you're able to use pagination:

...
import { PgParams, PaginationParams, Pagination } from '@tfarras/nestjs-typeorm-pagination';

@Get()
getMany(
  @PgParams() pg: PaginationParams,
): Promise<Pagination<UserEntity>> {
  return UserEntity.findAndPaginate(pg);
}

You still have access to TypeORM Find Options. Just pass them as the second parameter to the findAndPaginate

Example:

UserEntity.findAndPaginate(pg, {
  where: {
    firstname: IsNull(),
  },
});

Example request:

/user?_limit=11&_start=0&_sortBy=id&_order=DESC&id=1&id=2&email=farrastaimoor@gmail.com

Pagination response:

{
  "data": [
    {
      "id": 2,
      "email": "farrastaimoor@gmail.com",
      "firstname": "Taimoor",
      "lastname": "Farras",
      "country": "MD",
    }
  ],
  "total": 1,
}

changelog

RELEASE 1.0.0