覆盖Node.js Express响应方法

时间:2015-12-06 06:51:06

标签: javascript node.js express

我想略微更改ggplot(Data, aes(x=strata, y=value_measurement, fill=measurement, group=count)) + geom_bar(stat="identity", position=position_dodge(0.7), width=0.6) + facet_wrap(~reaction, ncol=1) + geom_errorbar(aes(x=strata, ymax=upper_CI, ymin=lower_CI, group=count), position=position_dodge(0.7), stat="identity", width=0.3) 方法的默认expressjs行为。我试图在我自己的中间件中覆盖它,事情是我需要调用它的原始内部。

但现在它只是调用自身导致堆栈溢出。

res.json(obj)

2 个答案:

答案 0 :(得分:6)

我不太了解表达的内部运作,但似乎这样的事情应该有效

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

修改:根据user3537411的评论和this以前对类似问题的回答,将json(obj)更改为json.call(this, obj)

P.S。我用开始回答我并不知道表达的内部工作非常好以避免那些只是把答案放在答案上的评论而没有真正进入为什么答案是坏的..相反,我得到的评论同样毫无意义。你不能用SO巨魔获胜

答案 1 :(得分:0)

它也可能有用

https://github.com/muratcorlu/connect-api-mocker/pull/30

安装两次仅适用于最后一个。

public JsonResult IsUserAlreadyExists(string Email, int? Id)
{
     var isUserAlreadyExists = userRepo.IsUserAlreadyExistsByEmail(Email,Id);
     return Json(!isUserAlreadyExists, JsonRequestBehavior.AllowGet);
}
相关问题