javascript 在下面的Nodejs代码中,添加到购物车是为第一个新项目工作的,但是,然后从其他类似项目单独添加每个项目数量?

zpqajqem  于 2023-01-04  发布在  Java
关注(0)|答案(1)|浏览(103)

添加到购物车是工作的第一个新项目,但是,然后每个项目的数量从其他类似的项目单独添加?

// 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路由器的一部分

ivqmmu1c

ivqmmu1c1#

这里有两个问题:
1.你在for循环中运行了一个save--几乎可以肯定这不是你想要做的
1.在for循环中,如果该项不是正在修改的项,则将该项推回到数组中。

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

我认为您只是想完全删除您的else分支。

相关问题