当前位置:  开发笔记 > 编程语言 > 正文

覆盖Node.js Express响应方法

如何解决《覆盖Node.jsExpress响应方法》经验,为你挑选了1个好方法。

我想稍微改变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();
});

小智.. 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();
});

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

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



1> 小智..:

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

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();
});

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

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

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有