Я пытаюсь хранить цены продуктов в сеансах, и если продукт дважды щелкнут, цена должна быть добавлена и показана в сеансе, но по какой-то причине, когда я пытаюсь добавьте два числа, например 15 + 15, он добавит как 01515, я не уверен, почему это происходит.номера не получаются вместе узел js
Вот файл .hbs, где начинается добавление продукта.
{{# each products}}
<div class="row">
{{# each this}}
<div class="col-sm-6 col-md-4">
<div class="thumbnail">
<img src="{{this.imagePath}}" alt="..." class="img-responsive">
<div class="caption">
<h3>{{this.title}}</h3>
<p>{{this.description}}</p>
<div class="clearfix">
<div class="price pull-left">${{this.price}}</div>
<a href="/add-to-cart/{{this._id}}" class="btn btn-sucess pull-right" role="button">Add to cart</a>
</div>
</div>
</div>
</div>
{{/each}}
</div>
{{/each}}
После добавления к кнопке корзину нажимается, вот маршрут и модель,
маршрут
router.get('/add-to-cart/:id', function(req, res, next) {
var productId = req.params.id;
var cart = new Cart(req.session.cart ? req.session.cart : {});
Product.findById(productId, function(err, product) {
if (err) {
return res.redirect('/');
}
cart.add(product, product.id);
req.session.cart = cart;
console.log(req.session.cart);
res.redirect('/');
});
});
Модель
module.exports = function Cart(oldCart) {
this.items = oldCart.items || {};
this.totalQty = oldCart.totalQty || 0;
this.totalPrice = oldCart.totalPrice || 0;
this.add = function(item, id) {
var storedItem = this.items[id];
if (!storedItem) {
storedItem = this.items[id] = {item: item, qty: 0, price: 0};
}
storedItem.qty++;
storedItem.price = storedItem.item.price * storedItem.qty;
this.totalQty++;
this.totalPrice += storedItem.item.price;
};
this.generateArray = function() {
var arr = [];
for (var id in this.items) {
arr.push(this.items[id]);
}
return arr;
};
};
Я пытался войти в консоль, чтобы увидеть, что происходит при добавлении чисел, она отображается так:
Cart {
items:
{ '5855c55482d8722419e21a7d': { item: [Object], qty: 1, price: 15 },
'5855c55482d8722419e21a7f': { item: [Object], qty: 1, price: 15 } },
totalQty: 2,
totalPrice: '01515',
add: [Function],
reduceByOne: [Function],
removeItem: [Function],
generateArray: [Function] }
Я очень новичок в узле js, и я не уверен, что с этим происходит.
Я думал, что этот ответ может работать, но это не так, к сожалению. Я сейчас очень смущен. –
@MasnadNihit см. Мой обновленный ответ - я думаю, что обе переменные на самом деле являются строками, поэтому нам нужно сделать их номерами –
Спасибо большое! Это сработало! Если все в порядке, я хотел бы задать вам два вопроса. 1) oldCart.totalЦена, 10 <- Что делают 10. 2) Есть ли способ отладить эти проблемы? Я не уверен, что console.log можно использовать в таких ситуациях? –