允许 Joi 中的可选参数而不指定它们
Allow optional parameters in Joi without specifying them
我对使用 Joi 在 hapi 中验证请求负载还很陌生。我的问题如下。我有这条定义的路线:
{
method: 'POST',
path: '/foo/bar',
config: {
description: 'foo.bar',
handler: handlers.foo,
auth:false,
tags: ['api'],
validate: {
payload: {
email : Joi.string().required(),
password : Joi.string().required(),
}
}
}
}
电子邮件和密码是我需要的属性。但是,我想允许其他属性而不必全部指定它们。例如:
{
email: foo@bar.com,
password: fooPass,
name: myName,
surname: mySurname
}
有没有办法用 Joi 做到这一点?
您可以在options
中将allowUnknown
设置为true
:
validate: {
payload: {
email : Joi.string().required(),
password : Joi.string().required(),
},
options: {
allowUnknown: true
}
}
options
参数在验证时传递给 Joi。
对于当前版本的 Joi (v15.1.0),同时执行
Joi.validate(value, schema, options)
设置allowUnknown: true
进入 options
对象。
参考:
https://github.com/hapijs/joi/blob/v15.1.0/API.md#validatevalue-schema-options-callback
我对使用 Joi 在 hapi 中验证请求负载还很陌生。我的问题如下。我有这条定义的路线:
{
method: 'POST',
path: '/foo/bar',
config: {
description: 'foo.bar',
handler: handlers.foo,
auth:false,
tags: ['api'],
validate: {
payload: {
email : Joi.string().required(),
password : Joi.string().required(),
}
}
}
}
电子邮件和密码是我需要的属性。但是,我想允许其他属性而不必全部指定它们。例如:
{
email: foo@bar.com,
password: fooPass,
name: myName,
surname: mySurname
}
有没有办法用 Joi 做到这一点?
您可以在options
中将allowUnknown
设置为true
:
validate: {
payload: {
email : Joi.string().required(),
password : Joi.string().required(),
},
options: {
allowUnknown: true
}
}
options
参数在验证时传递给 Joi。
对于当前版本的 Joi (v15.1.0),同时执行
Joi.validate(value, schema, options)
设置allowUnknown: true
进入 options
对象。
参考:
https://github.com/hapijs/joi/blob/v15.1.0/API.md#validatevalue-schema-options-callback