[英]After modifying express.js res.send function it won't emit any data
基本上我想做的是统一我的应用程序的每个响应,让它们看起来像这样
{
success: true,
error: "Error description",
errorCode: "SomeError",
data: {
...
}
}
到处复制和粘贴这个结构以及包装器 function 对我来说看起来很丑陋,所以我尝试修改send
function 以便它接受 4 个参数而不是仅 1 个,然后生成给定的结构。
我找到了有关如何修改send
function 的各种示例并想出了这个中间件
app.use(function (req, res, next) {
const oldSend = res.send;
res.send = function (data = {}, success = true, error = '', errorCode = '') {
let response = {
data,
success,
error,
errorCode
};
oldSend.apply(res, response);
};
next();
});
所以 res.send 调用看起来像这样
res.json(req.session.key != null, true, null, null);
哪个工作正常,除了它不向客户端返回任何响应。 你能帮我解决这个问题吗? 是否有可能实现预期的行为?
You are using function.apply
which expects a this
and then an array of the function arguments (see MDN for function.prototype.apply ). 您需要使用的是function.call
(再次参见MDN 的 function.prototype.call )。
但是,要注意覆盖 express(或任何库)的低级部分 - 您不知道还有什么可能会调用它,因此您可能会得到一些意想不到的结果。 您可能想检查(例如)提供的参数是否属于您期望的类型(例如对象),并将任何意外(例如Buffer
)直接传递给原始发送。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.