Javascript 验证nestjs中的多层嵌套对象
我试图在nestJs中使用类验证器装饰器来验证以下类型的输入请求Javascript 验证nestjs中的多层嵌套对象,javascript,node.js,nestjs,class-validator,Javascript,Node.js,Nestjs,Class Validator,我试图在nestJs中使用类验证器装饰器来验证以下类型的输入请求 { address: string location: { longitude: string, latitude : string } } 。问题是它仅限于一层嵌套对象。下面的一个有效 class ProjectLocation { @IsString() address: string; } export class CreateProject
{
address: string
location: {
longitude: string,
latitude : string
}
}
。问题是它仅限于一层嵌套对象。下面的一个有效
class ProjectLocation {
@IsString()
address: string;
}
export class CreateProjectDto {
@ValidateNested({each:true})
@Type(()=>ProjectLocation)
location:ProjectLocation
}
但是,当另一个嵌套层添加到ProjectLocation时,它将不起作用,并且您不能在ProjectLocation中使用@ValidatedNested向其添加另一个类类型
错误:没有与此调用匹配的重载
如我预期的那样,考虑如下:
class SomeNestedObject {
@IsString()
someProp: string;
}
class ProjectLocation {
@IsString()
longitude: string;
@IsString()
latitude: string;
@ValidateNested()
@IsNotEmpty()
@Type(() => SomeNestedObject)
someNestedObject: SomeNestedObject;
}
export class CreateProjectDto {
@IsString()
address: string;
@ValidateNested()
@Type(() => ProjectLocation)
location: ProjectLocation;
}
请注意,我在someNestedObject
上使用IsNotEmpty
来处理缺少道具的情况
以下是正确验证的无效请求的两个示例: 例1:
Request-Body:
{
"address": "abc",
"location": {
"longitude": "123",
"latitude" : "456",
"someNestedObject": {}
}
}
Response:
{
"statusCode": 400,
"message": [
"location.someNestedObject.someProp should not be empty"
],
"error": "Bad Request"
}
例2:
Request-Body:
{
"address": "abc",
"location": {
"longitude": "123",
"latitude" : "456"
}
}
Response:
{
"statusCode": 400,
"message": [
"location.someNestedObject should not be empty"
],
"error": "Bad Request"
}
谢谢你也为我工作。似乎我们应该显式地要求它在嵌套对象键上验证某些内容,使其验证内部类型。这在数组的情况下不起作用。我们如何处理它