无法使用 nestjs-joi lib 对 mongoose 模式进行验证

问题描述

我正在尝试在 nestjs 中使用带有猫鼬模式的 joi 验证,但有一个错误我无法解决 这是我的代码 schema.dto.ts

import Joi from "joi"
import { JoiSchema,JoiSchemaOptions } from "nestjs-joi" 

@JoiSchemaOptions({
    allowUnkNown: false,})
export class EmployeesJoi {
    @JoiSchema(Joi.string().required())fullName!: string;
  }

这里是我的控制器的一个小演示

    @Post('AddNew') 
       async add(@Body() employee: EmployeesJoi ) {

           await console.log(employee)

        }
}

最后,我遇到了那个错误

嵌套开始

H:\000\training-center\dist\employees\dto\employees.dto.js:21 nestjs_joi_1.JoiSchema(joi_1.default.string().required()),^

TypeError: Cannot read property 'string' of undefined
    at Object.<anonymous> (H:\000\training-center\dist\employees\dto\employees.dto.js:21:42)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (H:\000\training-center\dist\employees\employees.controller.js:18:25)

解决方法

我很确定 joi 的导出是命名导出,所以你需要这样做

import * as Joi from 'joi';

代替

import Joi from 'joi';