我正在嘗試添加一個子檔案并更新主檔案的"total"和"quanity"欄位。現在,我正在這樣做,但這似乎非常丑陋且效率低下。有沒有更好的方法來實作這一目標?
// Adds subdocument
const cart = await Cart.findByIdAndUpdate({_id: req.session.cart._id}, {$push: {courses: req.body}}, {new:true})
// Update totals and quantity
cart.set({total: cart.total parseInt(req.body.price), quantity: cart.quantity 1})
await cart.save()
理想情況下,我想要這樣的東西(下面顯然不起作用,但這是我的邏輯目標):
const cart = await Cart.findByIdAndUpdate(req.session.cart._id, async function(err, doc){
if(err){
res.status(404).json({error:err.message})
} else{
doc.courses.push(req.body.course)
doc.total = doc.total parseInt(req.body.price)
doc.quantity = doc.quantity 1
await doc.save()
}
}, {new: true})
謝謝 :)
uj5u.com熱心網友回復:
您可以使用$inc運算子原子更新一個檔案
請參閱$inc 運算子:
$inc 運算子按指定值遞增欄位
您的操作可能類似于:
const cart = await Cart.findByIdAndUpdate(
{_id: req.session.cart._id},
{
$push: {courses: req.body},
$inc: {
total: parseInt(req.body.price),
quantity: 1,
},
},
{new:true}
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/381513.html
