如何解决快速验证器检查输入是否是可用选项之一
<!DOCTYPE html>
<html>
<body>
<p>Select an element</p>
<form action="/action">
<label for="fruit">Choose a fruit:</label>
<select name="fruit" id="fruit">
<option value="Banana">Banana</option>
<option value="Apple">Apple</option>
<option value="Orange">Orange</option>
</select>
<br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
在服务器端,我想检查一下快递验证器,如果post请求中的水果是香蕉、苹果还是橙子。 这是我到目前为止的代码:
const{body} = require('express-validator');
const VALIDATORS = {
Fruit: [
body('fruit')
.exists()
.withMessage('Fruit is Requiered')
.isstring()
.withMessage('Fruit must be a String')
]
}
module.exports = VALIDATORS;
如何检查 POST 请求发送的字符串是否是所需的水果之一?
解决方法
由于 express-validator
基于 validator.js
,因此您可以用于这种情况的方法应该已经可用。无需自定义验证方法。
从 validator.js 文档,检查字符串是否在允许值的数组中:
isIn(str,values)
您可以在验证链 API 中使用它,例如:
body('fruit')
.exists()
.withMessage('Fruit is Requiered')
.isString()
.withMessage('Fruit must be a String')
.isIn(['Banana','Apple','Orange'])
.withMessage('Fruit does contain invalid value')
此方法也包含在 express-validator
文档中,此处
https://express-validator.github.io/docs/validation-chain-api.html#not(在 not
方法的示例中使用)
您可以通过 .custom 函数来实现;
例如:
body('fruit').custom((value,{req}) => {
const fruits = ['Orange','Banana','Apple'];
if (!fruits.includes(value)) {
throw new Error('Unknown fruit type.');
}
return true;
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。