【发布时间】:2015-12-06 06:51:06
【问题描述】:
我想稍微改变 res.json(obj) 方法的默认 expressjs 行为。我试图在我自己的中间件中覆盖它,问题是我需要在里面调用它的原始内容。
但现在它只是调用自身导致堆栈溢出。
app.use(function(req, res, next) {
res.json = function(obj) {
function delete_null_properties(obj) {
// ...
}
delete_null_properties(obj);
res.json(obj);
};
next();
});
【问题讨论】:
-
您为什么要这样做?我认为您正在解决错误的问题...您能解释一下您想要实现的目标,即您需要更改的内容吗?
-
@Sergio,它显示在代码中。我想要相同的
json,但没有空键。我希望它在整个应用程序中是透明的,就像默认方法一样。 -
但是
res.json会将响应发送回客户端......之后您有一个next()。您正在干扰 Expresses 对 clienth 方法的响应之一。我相信您可以通过其他方式解决您的问题。 -
会不会像重写 res.render 方法一样 - stackoverflow.com/questions/9285880/…
-
@Sergio,你为什么认为干扰快递的方法不好?你认为它会破坏严格依赖这种方法的模块中的功能吗?无论如何,我认为在删除空值的情况下没有太多需要担心的变化。
标签: javascript node.js express