Как я могу отфильтровать лишнее свойство модели - PullRequest
0 голосов
/ 09 мая 2018

У меня есть DTO-объект, подобный этому:

export class CreateProductDTO {
  readonly _id: number;
  readonly _name: string;
  readonly _price: number;
}

DTO используется в моем методе публикации

@Post('users')
async addUser(@Response() res, @Body(new ValidationPipe()) createUserDTO: CreateUserDTO) {
    await this.userService.addUser(createUserDTO).subscribe((users) => {
        res.status(HttpStatus.OK).json(users);
    });
}

Когда я публикую данные json, он сериализуется в CreateProduceDTO obcjet

{
  "_id":1,
  "_name":"Lux",
  "_age":19
}

Но я публикую данные json с избыточным свойством, они также сериализуются в объект CreateProduceDTO с избыточным свойством

{
  "_id":1,
  "_name":"Lux",
  "_age":19,
  "test":"abcv"
}

CreateUserDTO { _id: 1, _name: 'Lux', _age: 19, test: 'abcv' }

Я пытался отфильтровать их с помощью pipe, но понятия не имею.Спасибо всем.

1 Ответ

0 голосов
/ 10 мая 2018

Если вы хотите просто удалить лишние свойства, вы можете использовать ValidationPipe следующим образом:

new ValidationPipe({whitelist: true})

Если вы хотите, чтобы при возникновении каких-либо свойств, не включенных в белый список, выдается сообщение об ошибке:

new ValidationPipe({whitelist: true, forbidNonWhitelisted: true})

Проверьте https://www.npmjs.com/package/class-validator#whitelisting, чтобы узнать больше

...