【发布时间】:2019-04-02 12:35:24
【问题描述】:
我正在尝试让嵌套验证器按照“管道”文档 (https://docs.nestjs.com/pipes) 部分“对象架构验证”中的示例工作。我正在尝试使用 Joi 的示例,除了将模式从控制器传递到验证服务之外。
import * as Joi from 'joi';
import { PipeTransform, Injectable, ArgumentMetadata, BadRequestException
} from '@nestjs/common';
@Injectable()
export class JoiValidationPipe implements PipeTransform {
constructor(private readonly schema) {}
transform(value: any, metadata: ArgumentMetadata) {
const { error } = Joi.validate(value, this.schema);
if (error) {
throw new BadRequestException('Validation failed');
}
return value;
}
}
编译器抱怨:
Nest 无法解析 JoiValidationPipe (?) 的依赖关系。请 确保索引 [0] 处的参数在当前可用 上下文。
在控制器中
@Post()
@UsePipes(new JoiValidationPipe(createCatSchema))
async create(@Body() createCatDto: CreateCatDto) {
this.catsService.create(createCatDto);
}
编译器抱怨一个参数给定为零。
这看起来像是一个声明问题,但我真的不知道。为什么这不起作用,我应该如何将架构传递给服务?
【问题讨论】:
标签: javascript node.js typescript nestjs joi