2016-10-04 66 views
1

每次我得到一个新的价格,以下是应该发生: totalprice = totalprice +车[I] 例如,如果totalprice以前500和新的价格是800,总价格应该是(500 + 800),而它目前是(500 + 500 + 800)。为什么会发生?的Session变量更新数据两次

exports.add = function(req, res) { 
    var cart = req.body.cart; 
    console.log('frome node..adding checkcart.js'); 
    console.log("Session Initialized!!"); 
    for(var i = 0 ; i < cart.length ; i++) { 
     totalprice = cart[i].price + totalprice; 
     console.log('Current Price: '+cart[i].price); 
    } 
    req.session.cart = cart; 
    console.log(cart); 
    console.log('total: ' + totalprice); 
    //req.session.totalprice = totalprice; 
    json_responses = { 
     "totalprice": req.session.totalprice 
    } 
    res.send(json_responses); 
}; 
+0

添加控制台日志为例 –

+0

frome node..adding checkcart.js [{uid:'lenvyga',产品:'联想瑜伽',价格:800}] 会话已初始化! 当前价格:800 总数:800 POST/addtocart 200 117.127毫秒 - 2个 弗罗姆node..adding checkcart.js [{UID: 'lenvyga',产品: '联想瑜伽',价格:800},{ uid:'macbpr',产品:'MacBook Pro',价格:1200}] 会话初始化! 当前价格:800 当前价格:1200 总计:2800 – jack

+0

问题在哪里? 首先,总价格为0,当添加800时,它将变为800,如控制台日志中所述。然后再添加两个,(1)800和(2)1200.因此,需要总价格(目前为800),并增加价格(1)和(2)。这使得800 + 1200 + 800应该是2800.也就是说,正是你得到的(根据控制台日志)。 –

回答

0

这是很多答案之一。我会建议创建一个变量来计算已添加项目的数量。否则,你的for循环会一直重复计数。不要忘记你的问题缺乏很多代码,所以这会让我添加两个选项。

选项1

用户每次添加项目add函数将被调用。对于此选项,您只需将最近的添加项目添加到总价格计算中。因此,在你的代码,而不是:

for(var i = 0 ; i < cart.length ; i++) { 
    totalprice = cart[i].price + totalprice; 
    console.log('Current Price: '+cart[i].price); 
} 

用途:

totalprice = cart[cart.length-1].price + totalprice; 

选项2

此选项是当用户可以添加许多项目,价格都计算一次用户点击一个调用add方法的按钮。这只是稍微棘手。您需要添加一个计数器来计算已经计算的项目。所以在代码中:

var counter = 0; 
exports.add = function(req, res) { 
    var cart = req.body.cart; 
    var prevCounter = counter; 
    counter = req.body.cart.length - counter; // items added in the session 
    console.log('frome node..adding checkcart.js'); 
    console.log("Session Initialized!!"); 
    for(var i = prevCounter ; i < counter ; i++) { 
     totalprice = cart[i].price + totalprice; 
     console.log('Current Price: ' + cart[i].price); 
    } 
    req.session.cart = cart; 
    console.log(cart); 
    console.log('total: ' + totalprice); 
    //req.session.totalprice = totalprice; 
    json_responses = { 
     "totalprice": req.session.totalprice 
    } 
    res.send(json_responses); 
}; 

祝你好运!