[英]Joi custom validation
I'm using Joi to validate some data from user. 我正在使用Joi验证来自用户的一些数据。 I'm using it with module like this:
我将其与这样的模块一起使用:
const Joi = require('joi')
// User validation rules
module.exports = {
create: {
body: {
email: Joi.string().email().required(),
password: Joi.string().min(6).max(128).required(),
name: Joi.string().max(128).required()
}
},
update: {
body: {
password: Joi.string().min(6).max(128).required(),
name: Joi.string().max(128).required()
}
}
}
and then in router I'm passing it as middleware: 然后在路由器中将其作为中间件传递:
router.post('/register', validator(create), userController.register)
For update I want to create custom validator with code like this: 对于更新,我想使用以下代码创建自定义验证器:
const json = {
"email":"aa@aa.pl",
"password":"someNewPass",
"name":"John Smith",
"activationKey":"123123",
"active":false,
"resetPasswordKey":"123123"
}
const forbiddenFields = ["email", "activationKey", "active", "resetPasswordKey"];
const validate = (json, forbidden) => {
for(let i = 0; i < forbidden.length; i++) {
if(json.hasOwnProperty(forbidden[i])) {
return false;
}
}
return true;
}
const isValid = validate(json, forbiddenFields)
console.log('is json valid? ', isValid)
I found extend method in Joi API but example is so confusing that I can not handle to create custom validation with my code. 我在Joi API中发现了extend方法,但是示例如此混乱,以至于我无法使用我的代码创建自定义验证。
You may want to use forbidden keys. 您可能要使用禁止的钥匙。
const input = { email: 'example@example.com', activationKey: 123 }; const schema = { email: Joi.string().email(), activationKey: Joi.any().forbidden() }; const result = Joi.validate(input, schema); if (result.error) { console.log(result.error.details) }
<script src="https://cdn.jsdelivr.net/npm/joi-browser@13.4.0/dist/joi-browser.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.