我想向Express.js的response对象添加一个body
属性,每次调用send method is called
时都会调用该属性,我通过添加以下代码作为中间件来实现这一点,
但是由于某种原因,当我调用res.send
时,这个函数被调用了两次(一次是body是对象,第二次是同一个对象,但是是一个字符串)1.为什么它被调用了两次?2.为什么以及什么时候它被转换成字符串?
applicationsRouter.use(function (req, res, next) {
var send = res.send;
res.send = function (body) {
res.body = body
send.call(this, body);
};
next();
});
2条答案
按热度按时间vql8enpb1#
您可能会使用类似于以下内容的内容:
换句话说,您要将一个对象传递给
res.send
。这将执行以下操作:
res.send
res.send
检查参数类型,发现它是一个对象,并将其传递给res.json
res.json
将对象转换为JSON字符串,并再次调用res.send
,但这次使用JSON字符串作为参数vlju58qv2#
你必须使用
res.json(body)
。它将把body
作为响应主体发送。确保主体应该是对象。