Files
fennec-be/src/commons/pipes/sanitize.pipe.ts
2021-04-04 00:36:58 +08:00

26 lines
680 B
TypeScript

import { ArgumentMetadata, Injectable, PipeTransform } from '@nestjs/common';
import { plainToClass } from 'class-transformer';
@Injectable()
export class SanitizePipe implements PipeTransform {
transform(value: any, metadata: ArgumentMetadata) {
if (
!(value instanceof Object) ||
value instanceof Buffer ||
value instanceof Array
) {
return value;
}
const constructorFunction = metadata.metatype;
if (!constructorFunction || value instanceof constructorFunction) {
return value;
}
try {
return plainToClass(constructorFunction, value);
} catch (err) {
console.error(err);
throw err;
}
}
}