1.1.2 • Published 6 years ago
@tfarras/nestjs-typeorm-pagination v1.1.2
Installation
npm install @tfarras/nestjs-typeorm-paginationPagination 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.comPagination response:
{
"data": [
{
"id": 2,
"email": "farrastaimoor@gmail.com",
"firstname": "Taimoor",
"lastname": "Farras",
"country": "MD",
}
],
"total": 1,
}