node.js - 在express中将 "hook"放入app.response函数的正确方法是什么?

标签 node.js express middleware

我需要在调用 app.json 后向 app.json 和 app.jsonp 响应中添加一些数据,向其中添加中间件的正确方法是什么?我知道我可能会做这样的事情:

var jsonTemp = function(status, data) {
  if (!data) {
    data = status;
    status = 200;
  }
  data.extraValue = 'foo';
  res.json(status, data);

}
res.json = jsonTemp;

但是像这样的猴子修补似乎是一个“坏主意”。是否有官方方法可以使用某种中间件来连接响应?

最佳答案

我认为猴子补丁实际上可能是最好的解决方案,而无需更多地了解您要解决的问题。但是,您显示的代码确实会使服务器崩溃,所以不要使用它。

app.use(function (req, res, next) {

  var orig = res.json;
  res.json = function json(status, data) {

    if (!data) {
      data = status;
      status = 200;
    }

    data.extraValue = 'foo';
    orig.call(this, status, data);
  };

  next();
});

在这里,我将原始函数存储在变量 orig 中,然后在完成修改后委托(delegate)给该函数。您的代码一遍又一遍地调用修改后的函数,因为该函数现在位于 res.json 下。

关于node.js - 在express中将 "hook"放入app.response函数的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28256179/

相关文章:

mysql - 无法让passportjs使用express和mysql验证本地策略

Django 中间件process_view 获取 View 类?

node.js - express.json() 与正文解析器

javascript - 在express中正确使用app.set()?

javascript - 如何将对象中的每个值写入文本文件中的每一行

mysql - 错误: Can't set headers after they are sent.(jwt身份验证)

javascript - 如何在 Node.js 中为超大(> 1GB)文件的每一行运行异步函数

javascript - 如何仅向环回 API socket.io 中连接的套接字(客户端)发送数据

node.js - NodeJS Pdfmake 如何添加图像

node.js - node-mongodb-native 中的连接池,何时调用 db.open 和 db.close