hapijs joi 验证,只验证一个字段并允许任何字段
hapijs joi validation , just validate one field and to allow any field
我想验证一个字段并允许另一个字段不进行验证;通过示例只是为了验证:"firstname" 字段。在我的代码中,当我评论 'payload' 时,hapi 允许我记录任何字段,当我取消注释 'payload' 时,hapijs 不允许我记录任何字段,但我只想通过示例 'firstname' 来验证是 'string' 并让其余字段允许。我计划让变量字段符合数据库配置,所以我将只验证一些固定字段并保存另一个在前端控制的变量字段,而不是在后端
config: {
validate: {
/* payload: {
firstname: Joi.string(),
lastname: Joi.string()
...anothers fields...
}*/
}
}
更新:
感谢 Robert K. Bell,我修改了解决方案是添加 'validate':
config: {
validate: {
options: {
allowUnknown: true
},
payload: {
firstname: Joi.string()
}
}
}
您可能正在寻找 .unknown()
method:
object.unknown([allow])
仅覆盖当前对象范围内未知键的处理(不适用于子对象),其中:
allow
- 如果false
,不允许未知键,否则忽略未知键。
js
const schema = Joi.object({ a: Joi.any() }).unknown();
config: {
validate: {
payload: Joi.object({
'firstname': Joi.string(),
}).options({ allowUnknown: true })
}
}
不是在验证中添加验证字段,而是直接使用 Joi 对象验证有效载荷。使用它接受 allowUnknown true 它将只验证 Joi 对象中提到的字段。
..... {allowUnknown: true}
根据文档,创建 Joi objectSchema 时可以使用“选项”方法。
即非常简单 UI 可以发送很多密钥,但只使用 2 个密钥电子邮件和密码。所以验证函数可以这样定义。
function validateUserForSubscription(input) {
const schema = Joi.object({
email: Joi.string().min(5).max(255).required().email(),
password: Joi.string().min(5).max(1024).required()
}).options({ allowUnknown: true });
return schema.validate(input);
}
在其他文件中这样使用它。
const isValidUser = validateUserForSubscription(req.body);
我想验证一个字段并允许另一个字段不进行验证;通过示例只是为了验证:"firstname" 字段。在我的代码中,当我评论 'payload' 时,hapi 允许我记录任何字段,当我取消注释 'payload' 时,hapijs 不允许我记录任何字段,但我只想通过示例 'firstname' 来验证是 'string' 并让其余字段允许。我计划让变量字段符合数据库配置,所以我将只验证一些固定字段并保存另一个在前端控制的变量字段,而不是在后端
config: {
validate: {
/* payload: {
firstname: Joi.string(),
lastname: Joi.string()
...anothers fields...
}*/
}
}
更新: 感谢 Robert K. Bell,我修改了解决方案是添加 'validate':
config: {
validate: {
options: {
allowUnknown: true
},
payload: {
firstname: Joi.string()
}
}
}
您可能正在寻找 .unknown()
method:
object.unknown([allow])
仅覆盖当前对象范围内未知键的处理(不适用于子对象),其中:
allow
- 如果false
,不允许未知键,否则忽略未知键。
js
const schema = Joi.object({ a: Joi.any() }).unknown();
config: {
validate: {
payload: Joi.object({
'firstname': Joi.string(),
}).options({ allowUnknown: true })
}
}
不是在验证中添加验证字段,而是直接使用 Joi 对象验证有效载荷。使用它接受 allowUnknown true 它将只验证 Joi 对象中提到的字段。
..... {allowUnknown: true}
根据文档,创建 Joi objectSchema 时可以使用“选项”方法。
即非常简单 UI 可以发送很多密钥,但只使用 2 个密钥电子邮件和密码。所以验证函数可以这样定义。
function validateUserForSubscription(input) {
const schema = Joi.object({
email: Joi.string().min(5).max(255).required().email(),
password: Joi.string().min(5).max(1024).required()
}).options({ allowUnknown: true });
return schema.validate(input);
}
在其他文件中这样使用它。
const isValidUser = validateUserForSubscription(req.body);