这是我的一个判断函数,如果发现条件成立则return到跳转链接。
function checkValue(req, res) {
if (isNaN(req.body.goodsPrice) || isNaN(req.body.originalPrice)) {
req.session.error = '商品价格必须为数字';
console.log('..........................');
return res.redirect('/server');
}
}
然后再到这里调用这个函数,但是已经触发了条件并且return却依旧会往下执行。是异步导致吗?谢谢?
router.post('/server/:goods_id', function (req, res) {
...
checkValue(req, res);
var url = 'http://localhost:5001/admin/seller/goods/edit';
var options = {
url: url,
headers: {
'Cookie': 'session=' + req.cookies.session
},
form: goods
};
request.post(options, function (err, response, body) {
if (err) {
return console.log(err);
}
var data = JSON.parse(body);
console.log(data);
});
});
6 回复
是因为checkValue没有next- -。
执行顺序 post('/server') -----> checkValue -----> redirect('/server') -----> checkValue -----> ...
这样当然会没玩没了。
按照我对你的业务逻辑的理解,应该这么写。
function checkValue(req, res, next) {
if (isNaN(req.body.goodsPrice) || isNaN(req.body.originalPrice)) {
req.session.error = '商品价格必须为数字';
console.log('..........................');
return res.redirect('/server');
}
next()
}