npm install @tfarras/nestjs-typeorm-pagination
_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
You can filter your data by passing columns and values as query params.
For the moment we support Equal
and In
operator of typeorm.
To filter data with Equal
operator, you can simply add a parameter like column=value
Examples:
id=1
[email protected]
country=MD
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
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 protected]
Pagination
response:
{
"data": [
{
"id": 2,
"email": "[email protected]",
"firstname": "Taimoor",
"lastname": "Farras",
"country": "MD",
}
],
"total": 1,
}