我正在尝试向我的ExpressJS应用程序添加一个验证方法,但它似乎没有解决...我当前可以更改用户名,但是如果它有一个空字符串,应用程序崩溃,虽然它是假设发送错误。有什么建议吗?
var validatePresenceOf = function(val, func) {
if (typeof val === 'undefined' || val.length < 1) {
res.json({
errors: {
userName: "Your name can't be blank"
}
});
} else {
return func;
}
};
validatePresenceOf(req.body.userName, User.findByIdAndUpdate( currentUser._id, {
local: {
name : req.body.userName
}
}, function (err, user) {
if (err) throw err;
res.json({
user : user
});
}));
答案 0 :(得分:0)
Express会出错。当验证方法给出错误时,您可能忘记了或者没有使用“返回”!请检查一下。我相信express validator是更好的解决方案
答案 1 :(得分:0)
在验证检查之前,不应立即致电User.findByIdAndUpdate()
。
这个可以暂时解决您的问题:
var validatePresenceOf = function(val, func) {
if (typeof val === 'undefined' || val.length < 1) {
res.json({
errors: {
userName: "Your name can't be blank"
}
});
} else {
func();
}
};
validatePresenceOf(req.body.userName, function() {
User.findByIdAndUpdate( currentUser._id, {
local: {
name: req.body.userName
}
}, function (err, user) {
if (err) throw err;
res.json({
user : user
});
});
});
但是,我建议使用express-validator作为请求验证的最佳做法。