@tfarras/nestjs-typeorm-pagination
v1.1.2
Published
Extension for simple pagination of TypeORM entities
Downloads
58
Maintainers
Readme
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 protected]
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 protected]
Pagination
response:
{
"data": [
{
"id": 2,
"email": "[email protected]",
"firstname": "Taimoor",
"lastname": "Farras",
"country": "MD",
}
],
"total": 1,
}