如何过滤掉多余的模型属性

时间:2018-05-09 03:41:26

标签: node.js typescript nestjs

我有一个像这样的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 obcjet

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

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

我曾试图用烟斗过滤它,但我不知道。 谢谢大家。

1 个答案:

答案 0 :(得分:0)

如果您只想删除多余的属性,可以像这样使用ValidationPipe:

new ValidationPipe({whitelist: true})

如果您希望在存在任何非白名单属性时抛出错误:

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

查看https://www.npmjs.com/package/class-validator#whitelisting了解更多选项