将 Joi 升级到最新版本后出错 - 架构只能包含普通对象(名称)

amy*_*yst 8 node.js hapi joi

将 Joi 升级到最新版本 @hapi/Joi(17.1.1) 后,我的服务器没有启动,启动时出现以下错误。最近的版本似乎有一些重大变化。尚无法获得任何线索,感谢任何帮助。

Error: Schema can only contain plain objects (name)
    at new module.exports (/Users/xyz/project/projectxyz/node_modules/@hapi/hoek/lib/error.js:23:19)
    at module.exports (/Users/xyz/project/projectxyz/node_modules/@hapi/hoek/lib/assert.js:20:11)
    at Object.internals.schema (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/compile.js:88:5)
    at Object.exports.schema (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/compile.js:17:26)
    at internals.Base.$_compile (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/base.js:631:24)
    at /Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/types/keys.js:255:92
    at Object.exports.tryWithPath (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/common.js:173:16)
    at internals.Base.method [as keys] (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/types/keys.js:255:32)
    at Object.internals.schema (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/compile.js:90:25)
    at Object.exports.schema (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/compile.js:17:26)
    at Object.exports.compile (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/compile.js:117:24)
    at Object.compile (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/index.js:123:24)
    at Object.exports.compile (/Users/xyz/project/projectxyz/node_modules/@hapi/hapi/lib/validation.js:49:22)
    at module.exports.internals.Route._setupValidation (/Users/xyz/project/projectxyz/node_modules/@hapi/hapi/lib/route.js:197:43)
    at new module.exports.internals.Route (/Users/xyz/project/projectxyz/node_modules/@hapi/hapi/lib/route.js:122:14)
    at internals.Server._addRoute (/Users/xyz/project/projectxyz/node_modules/@hapi/hapi/lib/server.js:498:23)
    at internals.Server.route (/Users/xyz/project/projectxyz/node_modules/@hapi/hapi/lib/server.js:491:22)
    at /Users/xyz/project/projectxyz/src/app.js:73:14
    at Array.forEach (<anonymous>)
    at init (/Users/xyz/project/projectxyz/src/app.js:72:17)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at process.runNextTicks [as _tickCallback] (internal/process/task_queues.js:66:3) {
  path: 'name'
} Server Init error Error: Schema can only contain plain objects (name)
    at new module.exports (/Users/xyz/project/projectxyz/node_modules/@hapi/hoek/lib/error.js:23:19)
    at module.exports (/Users/xyz/project/projectxyz/node_modules/@hapi/hoek/lib/assert.js:20:11)
    at Object.internals.schema (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/compile.js:88:5)
    at Object.exports.schema (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/compile.js:17:26)
    at internals.Base.$_compile (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/base.js:631:24)
    at /Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/types/keys.js:255:92
    at Object.exports.tryWithPath (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/common.js:173:16)
    at internals.Base.method [as keys] (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/types/keys.js:255:32)
    at Object.internals.schema (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/compile.js:90:25)
    at Object.exports.schema (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/compile.js:17:26)
    at Object.exports.compile (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/compile.js:117:24)
    at Object.compile (/Users/xyz/project/projectxyz/node_modules/@hapi/joi/lib/index.js:123:24)
    at Object.exports.compile (/Users/xyz/project/projectxyz/node_modules/@hapi/hapi/lib/validation.js:49:22)
    at module.exports.internals.Route._setupValidation (/Users/xyz/project/projectxyz/node_modules/@hapi/hapi/lib/route.js:197:43)
    at new module.exports.internals.Route (/Users/xyz/project/projectxyz/node_modules/@hapi/hapi/lib/route.js:122:14)
    at internals.Server._addRoute (/Users/xyz/project/projectxyz/node_modules/@hapi/hapi/lib/server.js:498:23)
    at internals.Server.route (/Users/xyz/project/projectxyz/node_modules/@hapi/hapi/lib/server.js:491:22)
    at /Users/xyz/project/projectxyz/src/app.js:73:14
    at Array.forEach (<anonymous>)
    at init (/Users/xyz/project/projectxyz/src/app.js:72:17)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at process.runNextTicks [as _tickCallback] (internal/process/task_queues.js:66:3) {
  path: 'name'
}
Run Code Online (Sandbox Code Playgroud)

Bad*_*han 1

我认为你应该做这样的事情来处理这个错误:

    var ObjectJoi = Joi.object({
    //some item that you want to add

})

var mySchema = new Schema(Joigoose.convert(ObjectJoi))
const myModel = mongoose.model('myModel', mySchema);
Run Code Online (Sandbox Code Playgroud)