gpt4 book ai didi

javascript - Joi 自定义验证

转载 作者:行者123 更新时间:2023-12-02 23:22:46 25 4
gpt4 key购买 nike

我正在使用 Joi 来验证用户的一些数据。我将它与这样的模块一起使用:

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()
}
}
}

然后在路由器中我将其作为中间件传递:

router.post('/register', validator(create), userController.register)

对于更新,我想使用如下代码创建自定义验证器:

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)

我找到了extend method in Joi API但示例太令人困惑了,我无法使用我的代码创建自定义验证。

最佳答案

您可能想使用forbidden键。

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>

关于javascript - Joi 自定义验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56872944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com