【发布时间】:2020-09-01 08:03:21
【问题描述】:
问题
自定义验证器没有给出任何响应。我想在 express-validator 中验证下面的对象。特权密钥必须有效并且存在于我的数组中。如果特权对象不存在,则验证不起作用,因为它是可选的,但如果对象存在,则值必须有效
{
"email" : "john@gmail.com",
"privileges" : {
"topic" : true
}
}
user.js
const User = require('../../models/User');
const { check, validationResult } = require('express-validator');
let privilegesArray = ['topic'];
router.post(
'/',
[
check("privileges")
.custom(async (value, { req }) => {
Object.keys(value).forEach(function(key){
if(!privilegesArray.includes(key)){
return false;
}
if(value[key] === 'true' || value[key] === 'false' || value[key] === ''){
return false;
}
})
}).withMessage("Invalid privileges").optional({checkFalsy: true})
],
async (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
}
);
我是 node-js 的初学者,没有使用任何自定义验证器。
【问题讨论】:
标签: javascript node.js express validation express-validator