NestJS 管道 Joi.validate() (不是函数)

NestJS pipe Joi.validate() (is not a function)

我尝试在带管道的 NestJS 上使用 Joi 验证器。

https://docs.nestjs.com/pipes#object-schema-validation

import * as Joi from '@hapi/joi';
import { PipeTransform, Injectable, ArgumentMetadata, BadRequestException } from '@nestjs/common';

@Injectable()
export class JoiValidationPipe implements PipeTransform {
  constructor(
    private readonly schema: Joi.ObjectSchema,
  ) {}

  transform(value: any, metadata: ArgumentMetadata) {
    const { error } = Joi.validate(value, this.schema);

    if (error) {
      throw new BadRequestException('Validation failed');
    }

    return value;
  }
}

无法正常工作。

TypeError: Joi.validate is not a function

我做了一个PR来更新https://docs.nestjs.com,貌似已经部署好了,大家可以参考一下。

@hapijs/joi 已弃用 Joi.validate 版本 16,您必须直接在架构上调用 .validate

schema.validate代替Joi.validate,例如:

const schema = Joi.object({
    name: Joi.string().min(3).required()
});
const result = schema.validate(req.body);

或前往https://hapi.dev/family/joi/?v=16.1.8

了解更多信息