簡體   English   中英

node.js res.json搞砸了

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM