добавление и удаление акций из базы данных - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь добавить товар в свою базу данных, когда пользователь удаляет товар из корзины. Мой маршрут сокращения запаса работает отлично, и я могу удалить запас из моей базы данных. Я попытался сделать наоборот и получить некоторые странные результаты. Когда я req.body.productStock просто возвращает исходный запас 1000 и «добавляет» к нему 1, и в итоге получается 10001. Я бы хотел любую помощь. 1004 *

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('/');
        });
    });

e js, где я «добавляю товар в корзину, уменьшая запас», поэтому

<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');
    });

});

вот e js, где я 'удаляю из моей корзины, поэтому добавляю запас обратно в db'

<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>

1 Ответ

0 голосов
/ 24 апреля 2020

Должно быть, bike.productStock - это тип данных int, а product.item.productStock - строка.

Пожалуйста, посмотрите в этом направлении.

...