使用 express Validator .equals() 进行验证
Validating with express Validator's .equals()
我正在尝试验证对端点的请求,使用快速验证器的 .equals() 检查用户类型的输入是否等于 'savings' 或 'current'。但是 equals() 只选择第一个值。
我尝试使用 ||声明
const creatAccount = [
check('type').not().isEmpty().withMessage('Please specify account type'),
check('type').equals('savings' || 'current').withMessage('Invalid Account Type: Account Type can be either "savings" or "current"'),
check('initialDeposit').not().isEmpty().withMessage('specify a Initial Deposit'),
(req, res, next) => {
const errors = validationResult(req);
const errMessages = [];
if (!errors.isEmpty()) {
errors.array().forEach((err) => {
errMessages.push(err.msg);
});
return res.status(401).json({
status: 401,
error: errMessages,
});
}
return next();
},
]
那是因为
'savings' || 'current'
首先被解析(作为 'savings'
)并作为参数传递给 .equals()
。详细了解如何解决 || operator。
有几个选项:
const message = 'Invalid Account Type: Account Type can be either "savings" or "current"';
check('type').equals('savings').withMessage(message);
check('type').equals('current').withMessage(message);
此外,您可以将其移动到函数
const validateType = type => {
const message = 'Invalid Account Type: Account Type can be either "savings" or "current"';
check('type').equals(type).withMessage(message);
}
validateType('savings');
validateType('current');
推荐选项
使用oneOf
const { check, oneOf } = require('express-validator/check');
const message = 'Invalid Account Type: Account Type can be either "savings" or "current"';
const creatAccount = [
check('type').not().isEmpty().withMessage('Please specify account type'),
oneOf([
check('type').equals('savings'),
check('type').equals('current'),
], message),
check('initialDeposit').not().isEmpty().withMessage('specify a Initial Deposit'),
(req, res, next) => {
const errors = validationResult(req);
const errMessages = [];
if (!errors.isEmpty()) {
errors.array().forEach((err) => {
errMessages.push(err.msg);
});
return res.status(401).json({
status: 401,
error: errMessages,
});
}
return next();
},
]
我正在尝试验证对端点的请求,使用快速验证器的 .equals() 检查用户类型的输入是否等于 'savings' 或 'current'。但是 equals() 只选择第一个值。
我尝试使用 ||声明
const creatAccount = [
check('type').not().isEmpty().withMessage('Please specify account type'),
check('type').equals('savings' || 'current').withMessage('Invalid Account Type: Account Type can be either "savings" or "current"'),
check('initialDeposit').not().isEmpty().withMessage('specify a Initial Deposit'),
(req, res, next) => {
const errors = validationResult(req);
const errMessages = [];
if (!errors.isEmpty()) {
errors.array().forEach((err) => {
errMessages.push(err.msg);
});
return res.status(401).json({
status: 401,
error: errMessages,
});
}
return next();
},
]
那是因为
'savings' || 'current'
首先被解析(作为 'savings'
)并作为参数传递给 .equals()
。详细了解如何解决 || operator。
有几个选项:
const message = 'Invalid Account Type: Account Type can be either "savings" or "current"';
check('type').equals('savings').withMessage(message);
check('type').equals('current').withMessage(message);
此外,您可以将其移动到函数
const validateType = type => {
const message = 'Invalid Account Type: Account Type can be either "savings" or "current"';
check('type').equals(type).withMessage(message);
}
validateType('savings');
validateType('current');
推荐选项
使用oneOf
const { check, oneOf } = require('express-validator/check');
const message = 'Invalid Account Type: Account Type can be either "savings" or "current"';
const creatAccount = [
check('type').not().isEmpty().withMessage('Please specify account type'),
oneOf([
check('type').equals('savings'),
check('type').equals('current'),
], message),
check('initialDeposit').not().isEmpty().withMessage('specify a Initial Deposit'),
(req, res, next) => {
const errors = validationResult(req);
const errMessages = [];
if (!errors.isEmpty()) {
errors.array().forEach((err) => {
errMessages.push(err.msg);
});
return res.status(401).json({
status: 401,
error: errMessages,
});
}
return next();
},
]