我正在尝试弄清楚如何使用会话来跟踪用户并更新我的购物车集合:
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.I有一个页面,其中的项目可以添加到购物车中,我有一个购物车集合。代码适用于我将第一个项目添加到购物车时,它检查是否有购物车并且看到没有购物车,它会创建一个新的,为userkey变量分配会话ID并插入新项目。 问题是当我向购物车添加额外的商品而不是更新购物车时,它会覆盖购物车中的现有数据。我不知道如何解决这个问题
答案 0 :(得分:0)
插入物品后我必须保存购物车。所以我添加了
cart.save();
票证插入功能
之后