这是我的一个判断函数,如果发现条件成立则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()
}
 
       
    