覆盖Node.js Express响应方法

use*_*411 0 javascript node.js express

我想稍微改变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();
});
Run Code Online (Sandbox Code Playgroud)

Jar*_*a X 8

我不知道表达的内部工作非常好,但似乎这样的事情应该起作用

app.use(function(req, res, next) {
    var json = res.json;
    res.json = function(obj) {
        function delete_null_properties(obj) {
            // ...
        }
        delete_null_properties(obj);

        json.call(this, obj);
    };
    next();
});
Run Code Online (Sandbox Code Playgroud)

编辑:改变json(obj)json.call(this, obj)如根据注释通过user3537411以前回答过类似的问题

PS我开始回答我不知道表达的内部工作方式非常好,以避免那些只是把答案放在答案而没有真正进入为什么答案是错误的评论......而是我得到了那种评论这同样毫无意义.你不能用SO巨魔赢得胜利