nestjs-pagination-module
TypeScript icon, indicating that this package has built-in type declarations

1.1.5 • Public • Published

Pagination Module for Nest.js

Build Status

This is module for nest.js framework that provides pagination for typeorm repositories and query builder.

Requirements

Dependency version
node > 10
nestJs > 6.0.0
typeorm ^0.2.22

Installation:

npm i --save nestjs-pagination-module

Usage

Import pagination into module

@Module({
  imports: [
    ...
    PaginationModule,
  ],
  ...
})
export class MyModule {}

Inject PaginationService into your service:

@Injectable()
export class MyService {
  constructor(
    private readonly _repo: MyRepo<MyEntity>,
    private readonly _paginationService: PaginationService
  ) {}
}

Use pagination in service methods where you need it:

public async findAllPaginated(optionsPaginationOptions) {
  return this._paginationService.paginate<MyEntity>(this.repo, options);
}

PaginationOptions interface:

{
  // page to fetch
  pagenumber;
 
  // limit per page
  limitnumber;
 
  // express request will be used in next/prev meta properties
  request?: Request;
}

Controller example

@Controller('/api/myendpoint')
export class MyController {
  constructor(protected readonly service: MyService) {}
 
  @Get()
  async getAll(@Query('page') page = 0, @Query('limit') limit = 25) {
    this.service.findAllPaginated({ page, limit });
  }
}

Links

In order to receive links in response, you should provide express request object to pagination options.

Inject request into Controller method:

@Get()
async getAll(
  @Req() requestRequest,
  @Query('page') page = 0,
  @Query('limit') limit = 25) {
  this.service.findAllPaginated({ page, limit });
}

Pass this request into service

this.paginationService.paginate({
  page: 1,
  limit: 10,
  request 
})

It will build next/previous pages links and return them in response. If there no previous or next pages you will receive null in response object.

{
  "next": "/api/myendpoint?page=2&limit=25",
  "previous": null,
}

Response example

{
  "items": [
    {
      "item": 1
    },
    {
      "item": 2
    },
    {
      "item": 3
    },
    ...
  ],
  "page": 1,
  "limit": 25,
  "totalItems": 100,
  "pageCount": 4,
  "next": "/api/myendpoint?page=2&limit=25",
  "previous": null,
}

Package Sidebar

Install

npm i nestjs-pagination-module

Weekly Downloads

5

Version

1.1.5

License

MIT

Unpacked Size

75.2 kB

Total Files

40

Last publish

Collaborators

  • konro1