我正在使用 MongoDB、ExpressJs、ReactJs、Express 進行庫存系統管理,我的問題是如何在完成訂單后更新產品數量。
讓我解釋一下,例如,如果庫存產品數量為 10,那么在訂購 3 之后,我希望產品數量直接為 7...
希望有人理解邏輯
等待你的幫助
uj5u.com熱心網友回復:
const createOrder = asyncHandler(async(req, res) =>{
const user = await User.findById(req.user.id)
if(!user || user.isAdmin === false){
res.status(401)
throw new Error('No Authorised')
}
const {
customerName,
customerAddress,
customerNumber,
orderItems,
totalPrice
} = req.body
if(orderItems && orderItems.length === 0){
res.status(400)
throw new Error('No order Items')
}
else{
const order = new Order({
customerName,
customerAddress,
customerNumber,
orderItems,
totalPrice,
user,
})
const createdOrder = await order.save()
orderItems.forEach((item) => {
Product.updateOne(
{_id: _id},
{$inc: {qteInStock: -orderItems.quantity}},
(err, updatedData) => {})
}
res.status(200).json(createdOrder)
}
})
我沒有找到您從哪里_id更新產品集合。并且orderItems是一個陣列,因此您不會在其中獲得數量。
您必須遍歷每個專案orderItems并更新集合。
注意:完成程序后發送一次回應。在您更新數量之前發送的代碼中,我已經盡我所能更改了上面的代碼。
uj5u.com熱心網友回復:
您必須為此撰寫單獨的邏輯,但是我可以共享可以使用的通用邏輯。
假設您以這種方式存盤產品(示例):{product : 'apple', quantity : 10, productId : 121 }
然后,
一旦你收到 new order,使用product nameor productId(我建議使用 productId ),使用
products.findOneAndUpdate({ productId : productId }, $inc: {quantity : ( 0 - orderQuantity) }, (err, updatedData) => {})
在這里,您可能需要根據您使用的是 mongoose 還是 MongoDB 將其更改products.findOneAndUpdate為products.updateOne。
也是productId您從請求中收到的 productId。
并且orderQuantity是訂單的數量。
希望這對你有幫助!如果您遇到任何錯誤或遇到任何問題,請發表評論。
uj5u.com熱心網友回復:
這就是我的功能的樣子,但它不起作用
const createOrder = asyncHandler(async(req, res) =>{
const user = await User.findById(req.user.id)
if(!user || user.isAdmin === false){
res.status(401)
throw new Error('No Authorised')
}
const {
customerName,
customerAddress,
customerNumber,
orderItems,
totalPrice
} = req.body
if(orderItems && orderItems.length === 0){
res.status(400)
throw new Error('No order Items')
}
else{
const order = new Order({
customerName,
customerAddress,
customerNumber,
orderItems,
totalPrice,
user,
})
const createdOrder = await order.save()
res.status(200).json(createdOrder)
await Product.updateOne(
{_id: _id},
{$inc: {qteInStock: -orderItems.quantity}},
(err, updatedData) => {}
)
}
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/505010.html
