【发布时间】:2020-07-02 23:06:54
【问题描述】:
当使用 Joi 进行验证时,我经常有两个非常相似的模式。一种用于创建资源,一种用于更改资源。更改资源的模式通常是相同的,所有属性都是可选的。 Joi 有没有办法采用模式并使所有值都是可选的?
【问题讨论】:
当使用 Joi 进行验证时,我经常有两个非常相似的模式。一种用于创建资源,一种用于更改资源。更改资源的模式通常是相同的,所有属性都是可选的。 Joi 有没有办法采用模式并使所有值都是可选的?
【问题讨论】:
正如第一个答案所说,您可以使用.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' }
我在阅读“hapi.js 入门”一书第六章时学到了这一点。
希望对你有用。
【讨论】:
您可以使用 .keys 扩展 joi 模式
【讨论】: