Website-Suche

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