@tfarras/nestjs-typeorm-pagination
TypeScript icon, indicating that this package has built-in type declarations

1.1.2 • Public • Published

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
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,
}

Package Sidebar

Install

npm i @tfarras/nestjs-typeorm-pagination

Weekly Downloads

17

Version

1.1.2

License

none

Unpacked Size

11.4 kB

Total Files

15

Last publish

Collaborators

  • tfarras