nestjs直接存储一个json对象以及对其进行合法性校验
在NestJS中,你可以使用管道(Pipes)来对传入的JSON对象进行验证。以下是一个使用类验证器(ValidationPipe)的示例:
首先,确保你已经安装了class-validator
和class-transformer
。
npm install class-validator class-transformer
然后,定义一个DTO(数据传输对象)来描述你的JSON结构,并使用装饰器来指定验证规则。
// user.dto.ts
import { IsString, IsInt } from 'class-validator';
export class UserDto {
@IsString()
readonly name: string;
@IsInt()
readonly age: number;
}
接着,在你的NestJS服务或控制器中使用ValidationPipe
:
// app.controller.ts
import { Controller, Post, Body, UsePipes, ValidationPipe } from '@nestjs/common';
import { UserDto } from './user.dto';
@Controller()
export class AppController {
@Post('user')
@UsePipes(new ValidationPipe({ transform: true }))
createUser(@Body() userDto: UserDto) {
// 这里可以确信 userDto 是合法的
return { message: 'User created', user: userDto };
}
}
在上述代码中,@UsePipes(new ValidationPipe({ transform: true }))
装饰器用于启用验证。ValidationPipe
会自动将传入的JSON对象转换为UserDto
实例,并根据DTO定义的验证装饰器进行验证。如果数据不符合验证规则,会抛出一个异常。如果数据是合法的,则会继续执行后续的逻辑。
评论已关闭