在 Joi 中重用模式

Ste*_*idt 1 node.js joi hapi.js

当使用 Joi 进行验证时,我经常有两个非常相似的模式。一种用于创建资源,另一种用于更改资源。更改资源的模式通常是相同的,所有属性都是可选的。Joi 有没有办法采用模式并使所有值都可选?

小智 5

正如第一个答案所说,您可以使用.keys(),但让我用一个例子向您展示:

const Joi = require('joi')

const username = Joi.string()

const updateUser = Joi.object().keys({
  username
})

const createUser = Joi.object().keys({
  username: username.required()
})

updateUser.validate({}) //  OK { value: {} }

createUser.validate({}) //  ERROR { value: {}, error: Error: '"username" is required' }
Run Code Online (Sandbox Code Playgroud)

我是通过阅读《hapi.js 入门》一书第六章了解到这一点的。

我希望它对你有用。