[英]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.