添加到购物车是工作的第一个新项目,但是,然后每个项目的数量从其他类似的项目单独添加?
// registered user add anew cart or add to cart //
router.post("/", verifyToken, async (req, res) => {
//let olduser = {};
olduser = await Cart.findOne({userId:req.user.id});
if(olduser){
console.log('already found'+ olduser)
for(var i = 0 ; i < olduser.products.length; i++){
if(olduser.products[i].productId.toString() == req.body.productId.toString()){
//console.log('olduser is an old product'+ olduser);
olduser.products[i].quantity = Number.parseInt(olduser.products[i].quantity) + Number.parseInt(req.body.quantity);
}else{
olduser.products.push({productId:req.body.productId, quantity:req.body.quantity})
//console.log(olduser.products[3].productId);
};
try {
olduser = await olduser.save();
return res.status(201).send(olduser);
} catch (err) {
res.status(500).json(err);
}
};
}else{
let cart = {userId:req.user.id,
products:[{productId:req.body.productId, quantity:req.body.quantity}]
}
const newCart = new Cart(cart);
try {
const savedCart = await newCart.save();
//console.log("newCart"+newCart)
res.status(201).json(savedCart);
} catch (err) {
res.status(500).json(err);
}
}
});
当第一次添加项目时,它可以,但下一个项目单独添加到mongodb每次作为一个新的插入与出添加数量我的工作与NodeJS,express,JavaScript,EJS,CSS,HTML和更多,此代码是名为cart,js路由器的一部分
1条答案
按热度按时间ivqmmu1c1#
这里有两个问题:
1.你在for循环中运行了一个save--几乎可以肯定这不是你想要做的
1.在for循环中,如果该项不是正在修改的项,则将该项推回到数组中。
我认为您只是想完全删除您的
else
分支。