2016-07-06 2 views
1

Я пытаюсь выяснить, как использовать сессии для отслеживания пользователей, а также обновить свою коллекцию корзины:Как использовать коллекцию корзины

app.post('/cart/:id',function (req, res) 
{ 
    if(!userKey) 
    { 
     userKey = req.session.id; 
    } 

    Cart.findOne({userKey : userKey},function (err, cart) 
    { 
     if(err) 
     { 
      console.log("Error finding cart "+err); 
     } 
     else if(!cart) 
     { 
      cart = new Cart(); 
      cart.userKey = userKey; 
      cart.items = []; 

      cart.save(function (err) 
      { 
       if(err) 
       { 
        console.log("Error saving cart"+err); 
       } 
        Ticket.findOne({_id:req.params.id},function (err, ticket) 
        { 
         if(err) 
         { 
          console.log("Error finding ticket "+err); 
         } 

         cart.items.push({ 
          type:ticket.type, 
          price:ticket.price, 
          quantity:req.body.quantity, 
          total:ticket.price * req.body.quantity, 
          time:ticket.time, 
          date:ticket.date 
         }); 

        }); 
      }); 

     } 
     else if(cart) 
     { 
      Ticket.findOne({_id:req.params.id},function (err, ticket) 
      { 
       if (err) 
       { 
        console.log("Error finding ticket " + err); 
       } 

       cart.items.push({ 
         type: ticket.type, 
         price: ticket.price, 
         quantity: req.body.quantity, 
         total: ticket.price * req.body.quantity, 
         time: ticket.time, 
         date: ticket.date 
        }); 

      }); 
     } 
    }); 
}); 

выше мой код в моем route.js file.i» m создание экспресс и узел app.I есть страница с элементами, которые могут быть добавлены в корзину, и у меня есть коллекция корзины. Код работает, когда я добавляю первый элемент в корзину, он проверяет, есть ли корзина, и видно, что его нет, он создает новый, назначает идентификатор сеанса переменной userkey и вставляет новый элемент. Проблема заключается в том, что я добавляю дополнительные предметы в корзину, вместо того, чтобы обновлять корзину, она переопределяет существующие данные в корзине. Я не знаю, как это решить

ответ

0

Мне нужно сохранить корзину после вставки элемента. поэтому я добавил

cart.save(); 

После того, как функции вставки билетов

Смежные вопросы