An enhanced middleware for capturing unrelated filters for nestjs-paginate lib
Nestjs-Paginate-Relations-Filter-Middleware An enhanced middleware for capturing unrelated filters for nestjs-paginate lib.
$ npm i nestjs-paginate-relations-filter-middleware
First of all, this package was developed for nestjs-paginate lib. So don't forget to install nestjs-paginate before using this package
When sending relation via Swagger, it was supposed to come as relation[] but the server was giving 500 because it came as relation, we solved this problem with decals. The other problem is that if we try to filter about that package without sending a relation, we were getting 500 because the relation was not sent. This package was developed to solve the problems here.
Example;
Wrong Use: http://localhost:3000/patient-consent?filter.consentForm.id=86190245-1246-415b-a5e8-7c5813535f25
Correct Use: http://localhost:3000/patient-consent?relations=consentForm&filter.consentForm.id=86190245-1246-415b-a5e8-7c5813535f25
Error you will get with wrong usage without Nestjs-paginate-relations-filter-middleware
{
"statusCode": 500,
"error": "Internal Server Error"
}
Error you will get with wrong usage with Nestjs-paginate-relations-filter-middleware
{
"statusCode": 400,
"message": "You need to type the Relation of the Filter you type. Example; WrongLink: http://localhost:3000/patient-consent?filter.consentForm.id=86190245-1246-415b-a5e8-7c5813535f25&relations=patient, CorrectLink: http://localhost:3000/patient-consent?relations=consentForm&filter.consentForm.id=86190245-1246-415b-a5e8-7c5813535f25&relations=patient",
"error": "Bad Request"
}
With this package, we are now preventing the server from pulling(500). Also you can safely send relation from swagger.
# For import
$ import { RelationFilterMiddleware,RelationDecorator } from 'nestjs-paginate-relations-filter-middleware';
export class AppModule {
configure(consumer: MiddlewareConsumer): void {
consumer.apply(RelationFilterMiddleware).forRoutes({
path: '*',
method: RequestMethod.ALL,
});
}
}
@Get()
@ApiQuery({ name: 'relations', required: false, type: [String], isArray: true }) // For Swagger
findAll(@Paginate() query: PaginateQuery, @RelationDecorator() relation: any) {
return this.patientGdprService.findAll(query, relation);
}
http://localhost:3000/patient-consent?relations=consentForm,patient,surrogate
Send it separated by commas.
http://localhost:3000/patient-consent?relations=consentForm&filter.consentForm.id=86190245-1246-415b-a5e8-7c5813535f25&filter.consentForm.status=pending&filter.code=302
Send it separated by ampersand. You can find more details with nestjs-paginate lib.
- Author - Mustafa Kendigüzel
Nestjs-file-mimetype-filter MIT licensed.