我正在构建一个电子商务应用程序。当添加到购物车路线点(/ cart / add /:id)时,我会检查一个条件,如果产品已经存在于购物车中或者没有使用array.some()
var hi = req.session.user.cart.some(function(element,index,array){
return element.productId === req.params.id ;
})
console.log("hi' value "+hi);
if(hi === true){
var myResponse = responseGenerator.generate(false,"I already
exists",200,false);
res.send(myResponse);
}
else{
//proceed to next step and push the product to cart array
}
一切顺利并打印“我已经存在”的消息,直到我从购物车中删除产品。从购物车中取出产品后,如果我再次点击添加到购物车路线,则会打印上述消息,而不是将产品添加到购物车。我不确定我是否正确使用array.some()
我从购物车代码中移除
cartRouter.post('/delete/:id',auth.checkLogin,function(req,res){
//FIND USER AND PULL/REMOVE PRODUCT FROM CART
userModel.update({"_id":req.session.user._id},{$pull:{cart:
{"productId":req.params.id}}},function(err,user){
if(err){
var myResponse =
responseGenerator.generate(true,err,500,null);
res.send(myResponse);
}
else{
ourInfo.productDel = true;
var myResponse = responseGenerator.generate(false,"Deleted
successfully",200,ourInfo);
res.send(myResponse);
}
})
});
我确信这些产品的长度为0时会从购物车中移除。但不知何故,我从购物车中取出后无法添加相同的产品。