我正在使用nestjs/graphql
,并且我为 graphql 突变制作了一个 dto,其中我使用了类验证器选项,例如@IsString()
and @IsBoolean()
。为此我安装了class-validator
和class-transformer
。但是当我进行突变时,它给了我一个闻所未闻的错误。我用谷歌搜索了它,但没有任何结果。错误是这样的:
[Nest] 5872 - 2021. 11. 21. 오후 7:56:09 ERROR [ExceptionsHandler] classTransformer.plainToClass is not a function
TypeError: classTransformer.plainToClass is not a function
at ValidationPipe.transform (/home/inust33/ubereats-backend/node_modules/@nestjs/common/pipes/validation.pipe.js:51:39)
at /home/inust33/ubereats-backend/node_modules/@nestjs/core/pipes/pipes-consumer.js:16:33
at processTicksAndRejections (internal/process/task_queues.js:95:5)
在操场上,它向我展示了这样的: graphql playground error
我的 dto 看起来像这样:
@ArgsType()
export class createRestaurantDto {
@Field((type) => String)
@IsString()
@Length(5, 10)
name: string;
@Field((type) => Boolean)
@IsBoolean()
isVegan: boolean;
@Field((type) => String)
@IsString()
address: string;
@Field((type) => String)
@IsString()
ownersName: string;
@Field(() => String)
@IsString()
categoryName: string;
}
我使用这个 dto 的突变是这样的:
@Mutation(() => Boolean)
async createRestaurant(
@Args() createRestaurantDto: createRestaurantDto,
): Promise<boolean> {
try {
await this.restaurantService.createRestaurant(createRestaurantDto);
return true;
} catch (e) {
console.log(e);
return false;
}
}
我在 main.ts 中进行了验证管道设置,如下所示:
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe());
await app.listen(3000);
}
我所能得到的只是没有设置useGlobalPipes
我不想在这里做的选项,突变效果很好。你能帮我解决这个问题吗?