在猫鼬中多次添加相同产品时如何更新购物车

时间:2018-06-21 11:54:22

标签: node.js mongodb express mongoose

添加产品的次数超过购物车中一次传递的参数是用户ID和产品ID时,无法更新商品数量 将第一个产品添加到购物车并推入独特的产品时,我正在创建购物车。但是,当第二次添加相同的产品时,我想更新产品的数量x 2,而不是添加整个记录

这是我的代码:

router.get('/add-to-cart/:userID/:id', function (req, res, next) {
    var productId = req.params.id;
    var userId = req.params.userID;
    Cart.findOne({ user: userId }, (err, doc) => {
    if (err) res.send(err);
    if (doc == null) 
    { 
        var cart = new Cart;
        Product.findById(productId, (err, product) => {
        if (err) console.error(err);
        let item={
            id:product._id,
            name:product.name,
            price:product.price,
            subtotal:product.price*1,
            qty:1
        }
        cart.items.push(item);
        cart.user = userId; // set cart user
        cart.totalPrice = item.price * item.qty;
        cart.totalQty ++;
        cart.save((err, data) => {
            if (err)  res.send(err);
                    res.json(cart);
            });
        });
    }

    else{
        Product.findById(productId, (err, product) =>{
        let item={
            id: product._id,
            name: product.name,
            price:product.price,
            subtotal:product.price*1,
            qty:1
        }
        doc.items.push(item);
        doc.save(err,data=>{
            res.json(doc);
        })
        doc.totalQty ++;
        doc.totalPrice += item.price*item.qty;


    })
    }
})
});

module.exports =路由器;

这是我的购物车模式

const mongoose = require("mongoose");
var schema = mongoose.Schema;
// sample user schema
var CartSchema = new mongoose.Schema({
    product: {type: mongoose.Schema.Types.ObjectId,ref: 'Product'},
    totalQty:{type: Number,default: 0},
    totalPrice: {type: Number,default: 0},
    items : Array,
    user:{type: mongoose.Schema.Types.ObjectId,ref: 'User'}
});
module.exports =  mongoose.model('Cart', CartSchema); 

0 个答案:

没有答案