【问题标题】:adding and removing stock from database从数据库中添加和删除库存
【发布时间】: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


【解决方案1】:

一定是bike.productStock是int数据类型,product.item.productStock是字符串。

请朝这个方向看。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 2020-12-29
    • 1970-01-01
    相关资源
    最近更新 更多