【发布时间】:2021-02-25 07:02:09
【问题描述】:
我在尝试更新购物车记录时遇到了这个问题。 我通过客户 ID 搜索购物车,然后更新文档,但 db 记录仍然相同
const cart = new Cart({
//customer:{_id:req.body.customer},
product:req.body.products,
location:req.body.location,
totalPrice:totalPrice,
promoCode:req.body.promoCode
});
const existingConsumer = await Cart.findOne({customer:{_id:req.body.customer}});
if(JSON.stringify({})===JSON.stringify(existingConsumer) || existingConsumer==null){
const savedCustomers = await cart.save().then(data=>{
res.json(data);
}).catch(err=>{
res.json(err);
})
//res.json(savedCustomers);
}else{
// const res = await Cart.updateOne({customer:{_id:ObjectId(req.body.customer)}},cart);
Cart.updateOne({customer:{_id:ObjectId(req.body.customer)}},{"$push":req.body.products}).then(result => {
const { matchedCount, modifiedCount } = result;
if(matchedCount && modifiedCount) {
console.log(`Successfully added a new review.`)
}
console.log(result)
})
.catch(err => console.error(`Failed to add review: ${err}`));
// console.log(res.n)
// console.log(res.nModified)
}
如您所见,我尝试了几种方法。 findOneAndUpdate/UpdateOne/populate,到目前为止,这些都不适合我。 在 UpdateOne 上,我收到“在路径 '_id' 上执行更新会修改不可变字段 '_id'”错误,据我了解,这意味着它试图更新客户 _id 或某些 _id,而且它显然是不可变的。
【问题讨论】: