Значение не изменяется в базе данных - PullRequest
0 голосов
/ 29 апреля 2020

Привет всем, у меня возникла проблема, и я надеюсь, что вы можете мне помочь. Поэтому я сохраняю свои пользовательские данные в коллекции пользователей.

This is my User schema.....
const userSchema = new mongoose.Schema({
    username: String,
    password: String,
    googleId: String,
    facebookId: String,
    twitterId: String,
    name: String,
    userImg: String,
    cart: [{
      type: Object
    }],
    booking: [{
      type: Object
    }]
  });

Теперь я добавляю продукт из своего меню к массиву корзины, который находится в схеме пользователя, и он работает нормально, но у меня возникла проблема, когда я хочу обновить количество продуктов со страницы моей корзины .. Я дал две кнопки + для увеличения количество и - для уменьшения количества. Также я дал удалить кнопку, чтобы удалить этот конкретный продукт из корзины.

code for the Increment, Decrement and Remove the food Item(from cart page)

<a href="/cartUpdate/<%=product.title %>?action=subtract">
  <button class="btn btn-success" type="button" name="button">-</button>
</a>

<a href="/cartUpdate/<%=product.title %>?action=add">
  <button class="btn btn-success" type="button" name="button">+</button>
</a>

<a href="/cartUpdate/<%=product.title %>?action=clear">
  <button class="btn btn-danger" type="button" name="button">Remove</button>
</a>

Теперь моя проблема является то, что он не обновляет значение количества в базе данных, но кнопка удаления работает совершенно нормально, я не знаю, почему

// Update cart code
router.get("/cartUpdate/:product",isLoggedIn, (req, res) => {
  var productName = req.params.product;
  var userId = req.user.id;
  var action = req.query.action;

  User.findById(userId, (err,result)=>{
    var cart = result.cart;
    for (var i = 0; i < cart.length; i++) {
      if (cart[i].title === productName) {
        switch (action) {
          case "add":
            console.log(cart[i].qty);     
            cart[i].qty++;
            console.log(cart[i].qty);
            console.log(cart);
            break;
          case "subtract":
            cart[i].qty--;
          case "clear":
            cart.splice(i, 1);
            break;
          default:
            console.log("update problem");
            break;
        }
        break;
      }
    }
    result.save(err=>{
      if(!err){
        req.flash('success', "cart updated");
        res.redirect("/cart");
      }
    });
    console.log(result.cart);
  })

});

Теперь, если кто-то может мне помочь ... Как мне обновить и сохранить количество в базе данных?

1 Ответ

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

Вы не обновляете базу данных после локального обновления переменной cart. Как только вы обновите локальную переменную, убедитесь, что вы тоже обновили базу данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...