[英]node.js res.json messed up
首先我发出'/ init'请求,响应是{"x":50}
,然后我发出'/ user'请求,响应是{"x":50,"data":"jack"}
。 到目前为止没问题,但是如果我再次发出初始请求,它会再次发出{"x":50,"data":"jack"}
响应,这怎么可能?
var resp.success = {"x":50}
exports.init = function (req, res) {
res.json(resp.success)
};
exports.user = function (req, res) {
User.findOne({_id: "1234"}).exec(function (err, user) {
var response = resp.success;
response.data = user.name;
res.json(response);
});
};
因为您已在@init和@user方法之外的作用域中定义了var resp.success = {“x”:50},所以当您从这些方法中修改/读取resp.success时,它们正在访问单个共享对象resp.success的实例。 您可以通过在@init方法和@user中独立定义resp.success来解决此问题:
exports.init = function (req, res) {
var resp.success = {"x":50}
res.json(resp.success)
};
exports.user = function (req, res) {
var resp.success = {"x":50}
User.findOne({_id: "1234"}).exec(function (err, user) {
var response = resp.success;
response.data = user.name;
res.json(response);
});
};
如果你使用underscoreJS库,你也可以这样做:
var resp.success = {"x":50}
exports.init = function (req, res) {
var successResponseForThisRequest = _.clone(res.success);
res.json(resp.success)
};
exports.user = function (req, res) {
User.findOne({_id: "1234"}).exec(function (err, user) {
var successResponseForThisRequest = _.clone(res.success);
response.data = user.name;
res.json(response);
});
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.