我尝试从用户购物车中删除产品对象时,计数达到零。
changeProductCount : (details) => {
return new Promise(async (resolve, reject) => {
try {
if (details.count==-1 && details.quantity==1) {
console.log();
let response = await db.get().collection(CART_COLLECTION)
.updateOne({
$and: [
{ _id: ObjectId(details.cart) },
{ 'products.time': parseInt(details.time) }
]
}, {
$pull : {
products : { item : ObjectId(details.item) }
}
});
if (response) {
console.log(response);
resolve({ removeProduct: true })
}
} else {
let response = await db.get().collection(CART_COLLECTION)
.updateOne({
_id: ObjectId(details.cart),
'products.time': details.time
}, {
$inc : {
'products.$.quantity': parseInt(details.count)
}
});
if (response) {
console.log(response);
resolve({removeProduct:false})
}
}
} catch (error) {
reject(error)
}
})
}
这是我的代码,我试图从userCart
的数组中提取一个对象,当它们的乘积计数是0
时。
在这里,如果我把代码替换为:
let response = await db.get().collection(CART_COLLECTION)
.updateOne({
_id:ObjectId(details.cart)
}, {
$pull: {
products: {
item : ObjectId(details.item)
}
}
}
);
这段代码是工作,但问题是,如果有两件衬衫具有相同的产品ID,但不同的尺寸,比如说中号和大号,当中号被删除,大号也被删除。这就是为什么我添加时间为每个对象时,它是第一次添加到购物车。但是,它是不工作的。请帮助我在这个问题。
这是我得到的回答:
{
acknowledged: true,
modifiedCount: 0,
upsertedId: null,
upsertedCount: 0,
matchedCount: 1
}
1条答案
按热度按时间cvxl0en21#
我解决了这个问题。这是我用的代码。
由于时间已经是一个唯一的值,我使用它来匹配数组对象。