0

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

4

2 回答 2

4

正如第一个答案所说,您可以使用.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 入门”一书第六章了解到这一点。

我希望它对你有用。

于 2021-04-30T14:48:58.090 回答
1

您可以使用扩展 joi 模式.keys

https://joi.dev/api/?v=17.3.0#objectkeysschema

于 2020-10-30T17:12:55.287 回答