2016-07-06 9 views
1

Ich versuche, herauszufinden, wie man Sitzungen verwenden, um Benutzer zu verfolgen und auch meinen Wagen Sammlung aktualisieren:Wie eine Karre Sammlung verwenden

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

      }); 
     } 
    }); 
}); 

Oben ist mein Code in meinem route.js file.I‘ Ich erstelle eine Express- und Knoten-App. Ich habe eine Seite mit Artikeln, die zu einem Warenkorb hinzugefügt werden können, und ich habe eine Warenkorb-Sammlung. Der Code funktioniert, wenn ich den ersten Artikel zum Einkaufswagen hinzufüge, es prüft, ob es einen Einkaufswagen gibt, und sieht, dass es keinen gibt, erstellt einen neuen, weist der Benutzerschlüsselvariablen eine Sitzungs-ID zu und fügt den neuen Artikel ein. Das Problem ist, wenn ich zusätzliche Elemente in den Warenkorb hinzufügen, anstatt den Warenkorb zu aktualisieren, überschreibt es die vorhandenen Daten im Warenkorb. Ich bin nicht sicher, wie man das löst

Antwort

0

Ich muss den Warenkorb nach dem Einfügen des Artikels speichern. so hinzugefügt i

cart.save(); 

Nach dem Ticket Insert Funktion