【发布时间】:2020-08-08 11:43:43
【问题描述】:
当用户从购物车中删除商品时,我正在尝试将库存添加回我的数据库。我的“减少库存”路线工作得很好,我可以从我的数据库中删除库存。我试图做相反的事情并得到一些奇怪的结果。当我req.body.productStock 时,它只返回 1000 的原始库存并“添加”1 并最终成为 10001。我希望得到任何帮助。
减少库存路线和视图,效果很好:
router.post('/add-to-cart/:id', function(req, res, next){
var productId = req.params.id;
var cart = new Cart(req.session.cart ? req.session.cart : {});
var size = req.body.bikeSize
var reduceStock = req.body.productStock - 1; <----
var newData = {productStock: reduceStock} <----
Product.findByIdAndUpdate(productId, newData, function(err, product){ <----
if(err){
// !!!!add an error message!!!!
return res.redirect('/');
}
console.log(reduceStock) <----
cart.add(product, product.id, size);
req.session.cart = cart;
console.log(req.session.cart);
res.redirect('/');
});
});
我将商品添加到购物车的 ejs,因此减少了库存
<form action="/add-to-cart/<%= bike.id %>" method="POST">
<button type="submit" name="submit" value="submit" id="addToCart">Add to Cart</button>
<select name="bikeSize" class="custom-select" id="" aria-label="">
<% var sizes = bike.sizes %>
<% sizes.forEach(function(bikeSize) { %>
<option name="bikeSize" value="<%= bikeSize.size %>"> <%= bikeSize.size %> </option>
<% }); %>
<input type="text" value="<%= bike.productStock %>" name="productStock" hidden>
</select>
</form>
我添加的股票路线和视图不起作用:
router.post('/reduce/:id', function(req, res, next){
var productId = req.params.id;
var cart = new Cart(req.session.cart ? req.session.cart : {});
var size = req.body.bikeSize
var addStock = req.body.productStock + 1; <----
var newData = {productStock: addStock} <----
Product.findByIdAndUpdate(productId, newData, function(err, product){ <----
if(err){
// !!!!add an error message!!!!
console.log(err);
return res.redirect('/');
}
console.log(addStock) <----
cart.reduceByOne(productId);
req.session.cart = cart;
res.redirect('/shopping-cart');
});
});
这是我“从购物车中删除,因此将库存添加回数据库”的 ejs
<form action="/reduce/<%= product.item._id %>" method="POST">
<button type="submit" name="submit" value="submit" id="addToCart">Reduce by 1</button>
<input type="text" value="<%= product.item.productStock %>" name="productStock" hidden>
</form>
【问题讨论】:
-
您考虑过使用
$inc运算符吗?
标签: database mongodb express mongoose nosql