在 node js 中使用 joigoose 和 mongoose 进行验证的模式

Schema Using joigoose and mongoose for validation in node js

我正在使用 @hapi/joi 在猫鼬模式中进行验证。我正在使用 joigoose 转换 mongoose 模式中的 joi 对象,如下所示:

import mongoose from 'mongoose';
import joi from '@hapi/joi';
const joigoose = require('joigoose')(mongoose);
let objectId = mongoose.Schema.Types.ObjectId;

let userInfo = joi.object().keys({
    userId: joi.string().required().alphanum().meta({ type: 'objectId' }),
    firstName: joi.string().required().min(4).max(20),
    lastName: joi.string(),
    birthDate: joi.date(),
    email: joi.string().email(),
    mobile: joi.number().max(10),
    isActive: joi.boolean()
})

let userInfoSchema = new mongoose.Schema(joigoose.convert(userInfo));
module.exports = mongoose.model('userInfoModel', userInfoSchema, 'userInfo');

这是抛出错误如下:

我无法弄清楚问题出在哪里。

更新:Joigoose 已在 7.0.0 版本中修复此错误:https://github.com/yoitsro/joigoose/issues/36

运行 下面的命令列出项目文件夹中包的所有依赖项

npm list

在树中找到 joigoose 及其依赖项:

+-- joigoose@6.2.0
| +-- @hapi/hoek@8.5.1 deduped
| `-- @hapi/joi@16.1.8 deduped

安装相同版本的@hapi/joi,方法是:

npm install @hapi/joi@16.1.8

很遗憾,到目前为止,joigoose 的最新版本与@hapi/joi 17.x 版本不兼容。

Link: https://github.com/yoitsro/joigoose/issues