我正在使用快速验证器来验证我的API的输入,但是我在理解匹配函数时遇到了一些问题。基本上,我需要能够找出一个字符串是否与一个可接受的值数组中的任何一个值相匹配,如下所示,但它似乎不起作用。有什么建议吗?
var schema = {
"role": {
in: 'body',
matches: {
options: ["administrator", "editor", "contributor", "user"],
errorMessage: "Invalid role"
}
}
}
req.check(schema)发布于 2018-06-18 12:44:25
由于这篇文章是在一段时间前发布的,有些事情发生了变化,我想是时候进行更新了:
根据快速验证器5.2.0的文档,建议为验证架构提供以下语法(请注意,在调用note解析器之前,调用快速验证器和函数名checkSchema非常重要):
app.js
const bodyParser = require('body-parser');
const expressValidator = require('express-validator');
/* Initialize/Mount BodyParser for parsing application/x-www-form-urlencoded */
app.use(bodyParser.urlencoded({ extended: false }));
/* Initialize/Mount BodyParser for parsing application/json */
app.use(bodyParser.json());
/* Initialize/Mount Express-Validator for validating user input from the frontend */
app.use(expressValidator());在路由中(以下是一个注册示例):
/* INFO: Require express validator */
const { check, checkSchema, validationResult } = require('express-validator/check');
var Schema = {
"role": {
in: 'body',
matches: {
options: [/\b(?:administrator|editor|contributor|user)\b/],
errorMessage: "Invalid role"
}
}
}
module.exports = (router) => {
router.post('/register', [
// INFO: check validty
check('username',"Invalid username").isLength({min: 5}),
check('email',"Invalid e-mail").isEmail(),
check('department',"Invalid department").isLength({min: 3}),
checkSchema(Schema),
check('password',"Invalid password").isLength({min: 5})
],
function(req, res, next) {
const errors = validationResult(req);
if (!errors.isEmpty()) {
// DO THIS
}
else {
// DO THAT
}
});
return router;
} https://stackoverflow.com/questions/41289980
复制相似问题