node.js - Wie kann ich überschüssige Modelleigenschaften herausfiltern
Ich habe ein DTO-Objekt wie dieses:
export class CreateProductDTO {
readonly _id: number;
readonly _name: string;
readonly _price: number;
}
Das DTO wird bei meiner Post-Methode verwendet
@Post('users')
async addUser(@Response() res, @Body(new ValidationPipe()) createUserDTO: CreateUserDTO) {
await this.userService.addUser(createUserDTO).subscribe((users) => {
res.status(HttpStatus.OK).json(users);
});
}
Wenn ich JSON-Daten poste, werden sie in ein CreateProduceDTO-Objekt serialisiert
{
"_id":1,
"_name":"Lux",
"_age":19
}
Aber ich poste JSON-Daten mit überschüssiger Eigenschaft, es wird auch in ein CreateProduceDTO-Objekt mit überschüssiger Eigenschaft serialisiert
{
"_id":1,
"_name":"Lux",
"_age":19,
"test":"abcv"
}
CreateUserDTO { _id: 1, _name: 'Lux', _age: 19, test: 'abcv' }
Ich hatte versucht, es mit einer Pipeline zu filtern, aber ich habe keine Ahnung. Danke an alle.
Antwort #1
Wenn Sie nur die überflüssigen Eigenschaften entfernen möchten, können Sie ValidationPipe so verwenden:
new ValidationPipe({whitelist: true})
Wenn Sie lieber eine Fehlermeldung erhalten möchten, wenn nicht erlaubte Eigenschaften vorhanden sind:
new ValidationPipe({whitelist: true, forbidNonWhitelisted: true})
Siehe https://www.npmjs.com/package/class-validator#whitelisting für weitere Optionen
