2016-07-06 4 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에 믿을수입니다 ' 익스프레스 및 노드 app을 구축합니다. 저는 장바구니에 추가 할 수있는 항목이있는 페이지가 있으며 장바구니 콜렉션이 있습니다. 이 코드는 첫 번째 항목을 장바구니에 추가 할 때 작동하며 장바구니가 있는지 확인하고 없음이 있는지 확인하고 새 장을 만들고 userkey 변수에 세션 ID를 할당 한 다음 새 항목을 삽입합니다. 문제는 카트를 업데이트하는 대신 카트에 여분의 항목을 추가 할 때 카트의 기존 데이터를 무시하는 것입니다. 그 문제를 해결하는 방법을 모르겠다.

답변

0

항목을 삽입 한 후에 카트를 저장해야합니다. 그래서 티켓 삽입 함수 후

cart.save(); 

추가

관련 문제