Пн goose тянуть команду, чтобы удалить продукт из корзины - PullRequest
0 голосов
/ 16 марта 2020
CartController.prototype.addToCart =(req, res, next) => {

    // Using mongoose in-built function "findbyID"
Product.findById({_id : req.params.productId}).then( item => 
{
    if (!item) {res.status(400).send({message : "item not found"})}
    Cart.findByIdAndUpdate(req.params.userId,
    {
        total_quantity : 0,
        total_price : 0,
        final_price : 0,
        "$push": {"products": {
                // Passing Data
                productid : item._id,
                MRP : item.offers.MRP,
                finalprice : item.offers.finalprice,
                discount :  item.offers.discount,
                organization : item.property.organization,
                brand : item.property.brand,
                color : item.property.color,
                weight : item.property.weight,
                category : item.property.category
            }
        },
        userid : req.params.userId   
    },
        { upsert: true, returnNewDocument : true}
    ).then(() => {
        res.status(200).send({message: "product added to cart"});
        }).catch(err => {
            res.status(500).send(err);
        });
}).catch (err => {
    res.status(500).send("item fetch related issue found", err);
});
};

// json вывод

[
{
    "_id": "5e5a58843ed45a235c32ac8c",
    "__v": 0,
    "createdAt": "2020-03-16T18:04:31.370Z",
    "updatedAt": "2020-03-16T18:41:23.068Z",
    "userid": "5e5a58843ed45a235c32ac8c",
    "inCart": false,
    "products": [
        {
            "category": "Home Decor",
            "weight": 300,
            "color": "Multicolor",
            "MRP": 5000,
            "productid": "5e6f4234564e2d1b74ba3383",
            "_id": "5e6fbfaf3818775ac010187e",
            "quantity": 1,
            "brand": "",
            "organization": "",
            "discount": 20
        },
        {
            "category": "Home Decor",
            "weight": 300,
            "color": "Multicolor",
            "MRP": 5000,
            "productid": "5e6b21458f7019378c4981ff",
            "_id": "5e6fbff53818775ac0101881",
            "quantity": 1,
            "brand": "",
            "organization": "",
            "discount": 20
        }
    ],
    "final_price": 0,
    "total_price": 0,
    "total_quantity": 0
}
]

// модель корзины

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;

var product = new Schema({
  productid : {
    type: Schema.Types.ObjectId,
    // required: true,
    ref: 'Product'
  },
  MRP : {
    type  : Number,
    // required : true
  },
  finalPrice : {
    type : Number
  },
  discount : {
    type : Number, default : 0
  },
  organization : {
    type  : String, default : null
  },
  brand : {
    type : String, default : null
  },
  color : {
    type : String
  },
  weight : {
    type : Number
  },
  category : {
    type : String,
    // required :true
  },
  quantity : {
    type : Number,
    // required : true,
    default : 1
  }
});

var cartSchema = new Schema({
  total_quantity : {type : Number, required : true, default: 0},
  total_price : {type : Number, required : true, default: 0},
  final_price : {type : Number, required : true, default: 0},
  products : [product],
  userid : { 
    type: Schema.Types.ObjectId,
    required: true,
    ref: 'Pujari'
  },
  inCart : {type : Boolean, default : 0}
  },
  {
    timestamps:true
  }
);

module.exports = mongoose.model('Cart', cartSchema);

// удаление элемента корзины

CartController.prototype.deleteCartItem = (req, res, next) => {
Cart.update({userid : req.params.userId}, { $pull: { products : {productid: req.params.productId }}}, {multi: true})
};

Итак, в основном я должен собрать один продукт и другой продукт для корзины, мой вопрос заключается в том, как удалить конкретный продукт из корзины, как показано ниже json У меня есть продукт. Я просто хочу удалить объект, где "productid": "5e6b21458f7019378c4981ff", я пробовал оператор mongodb $ pull, но он не работает для этих данных.

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Для меня ваше обновление работает (для данного документа):

db.collection.updateMany(
   { userid: "5e5a58843ed45a235c32ac8c" },
   { $pull: { "products": { productid: "5e6b21458f7019378c4981ff" } } }
)


{ 
    "acknowledged" : true, 
    "matchedCount" : 1.0, 
    "modifiedCount" : 1.0
}
0 голосов
/ 17 марта 2020

наконец-то я нашел решение, произошла небольшая ошибка, которую я делал

//delete cart item
CartController.prototype.deleteCartItem = (req, res, next) => {
Cart.update({userid : req.params.userId}, { $pull: { products : {category: "Home" }}}, function (err, data) {
    if (err) res.send(err)
    else res.send(data)
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...