在中间件中覆盖Expressjs响应不起作用

时间:2017-05-03 09:02:40

标签: node.js express

我想在返回之前修改响应正文,我已经使用了来自this answer

的解决方案

但它没有用,这是我的代码:

app.js

function modify(req, res, next) {
  var json = res.json;
  console.log("step 1");
  res.json = function(data) {
    console.log("step 2");
    json.call(this, "modified");
  };
  next();
}
app.use(modify);
路由器中的

router.get('/',(req,res,next)=>{
  res.json('Welcome')
  next()
})

中间件已被调用,但覆盖功能(步骤2)从未被调用,请告诉我代码有什么问题,谢谢!

1 个答案:

答案 0 :(得分:0)

使用next()仅传递给下一个函数

router.get('/',(req,res,next)=>{
    if(wantToStop=='true'){
       res.json('Welcome')
    }else{
      next()
   }

 })