2016-07-06 3 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ある」をエクスプレスとノードappを構築しています。私はカートに追加できるアイテムのページを持っており、カートコレクションを持っています。このコードは、カートに最初のアイテムを追加するときに機能し、カートがあるかどうかをチェックしていないかどうかを確認し、新しいものを作成し、セッションIDをuserkey変数に割り当てて新しいアイテムを挿入します。 問題は、カートを更新する代わりに余分なアイテムをカートに追加するときに、カート内の既存のデータを上書きする場合です。私はそれを解決する方法がわかりません

答えて

0

アイテムを挿入した後にカートを保存する必要があります。私はチケットを挿入機能

cart.save(); 

を追加しました

関連する問題