提问人:GoldNova 提问时间:1/21/2021 更新时间:1/21/2021 访问量:13556
快速验证器检查输入是否是可用选项之一
Express validator check if input is one of the options available
问:
目前我有这样的html代码:
<!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>
在服务器端,我想要与快速验证者核实帖子请求中的水果是香蕉、苹果还是橙子。 这是我目前拥有的代码:
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 请求发送的字符串是否为必填结果之一?
答:
2赞
Okan
1/21/2021
#1
您可以通过 .custom 函数来完成;
例如:
body('fruit').custom((value, {req}) => {
const fruits = ['Orange', 'Banana', 'Apple'];
if (!fruits.includes(value)) {
throw new Error('Unknown fruit type.');
}
return true;
})
23赞
turbopasi
1/21/2021
#2
由于基于 ,因此应该已经可以使用可用于这种情况的方法。无需自定义验证方法。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')
此方法也包含在文档中,此处 https://express-validator.github.io/docs/validation-chain-api.html#not(该方法在示例中使用)express-validator
not
评论
0赞
GoldNova
1/21/2021
谢谢!它帮了我很多!
评论
.matches()
.matches('Apple')