javascript - 如何循环然后保存产品?
问题描述
下午好,我正在尝试循环更改猫鼬中产品的其余部分。但坚持是行不通的。我将不胜感激您的帮助!
const statusOutOfStock = await ProductStockStatus.findOne({
color: 'danger',
})
for await (const product of Product.find()) {
const orderItems = order.orderItems.filter(
item => String(item.product) === String(product._id)
)
if (orderItems?.length > 0) {
orderItems.forEach(async orderItem => {
if (orderItem.varIdx === 0 && product.stock !== null) {
const stockResult = product.stock - orderItem.count
product.stock = stockResult
if (stockResult === 0) product.status = statusOutOfStock._id
} else {
const stockResult =
product.variations[orderItem.varIdx].stock - orderItem.count
product.variations[orderItem.varIdx].stock = stockResult
if (stockResult === 0)
product.variations[orderItem.varIdx].status = statusOutOfStock
}
})
await product.save()
}
}
解决方案
我能够解决这个问题。
/* Deduction of stock */
const statusOutOfStock = await ProductStockStatus.findOne({
color: 'danger',
})
for await (const product of Product.find()) {
/* Get order items by productID */
const orderItems = order.orderItems.filter(
item => String(item.product) === String(product._id)
)
/* If order items exists */
if (orderItems?.length > 0) {
/* Run of order items and write new stock */
const proDb = await Product.findById(product._id)
let buffer = []
await Promise.all(
orderItems.map(async orderItem => {
if (orderItem.varIdx === 0 && product?.stock !== null) {
const stockResult = product.stock - orderItem.count
proDb.stock = stockResult < 0 ? 0 : stockResult
if (stockResult === 0) proDb.status = statusOutOfStock._id
} else if (
!!product?.variations[orderItem.varIdx]?.stock !== null &&
orderItem.varIdx !== 0
) {
const stockResult =
product.variations[orderItem.varIdx].stock - orderItem.count
if (buffer?.length === 0) buffer = [...product.variations]
buffer[orderItem.varIdx].stock =
stockResult < 0 ? 0 : stockResult
proDb.variations = buffer
if (stockResult === 0)
proDb.variations[orderItem.varIdx].status = statusOutOfStock
}
})
)
await proDb.save()
}
}
推荐阅读
- javascript - 文本 var 到 json 数组
- plot - 如何在图表上绘制/绘制矩形或框
- android - 从头开始重新创建片段或使用后台堆栈?
- javascript - TypeError: Object(...) is not a function in react-fontawesome
- android - 如何在不公开我的应用程序的情况下从我的谷歌开发者帐户获取无限安装链接?
- java - 从firebase方法检索数据
- java - 如何使号码选择器不可取消?
- html - html 元视口 user-scalable=no 似乎不再适用于 iOS 13.3
- mysql - 如何在nodejs中将图像blob插入mysql表
- javascript - 编辑数据 InputBox, Html, JavaScript