Любой может помочь мне с использованием async await .Это застряло у меня.Пожалуйста, помогите мне, это трудно понять с асинхронным и жду.Это ниже мой код.Я хочу, чтобы мой код работал в порядке.переменная ids - это массив, а tmpDoc - тоже массив документов для переноса цикла в массив, а затем я удаляю коллекцию в массиве $ в и после того, как я использую insertMany rawCollection для вставкимассив документов. Пожалуйста, смотрите мой код рекомендовать
let items = Inventories.find(
{
itemId: itemId,
tranDate: {
$gt: tranDate,
},
branchId: branchId,
warehouseId: warehouseId,
},
{
sort: {
tranDate: 1,
createdAt: 1,
// _id: 1,
},
}
).fetch()
try {
let ids = [],
tmpDoc = []
let tmpLastBalQty = balanceQty
let tmpLastBalAmount = balanceAmount
let tmpAvgCost = avgCost
_.forEach(items, async item => {
let condition = false
if (
item.refType === 'Cash_Sale' ||
item.refType === 'Invoice' ||
item.refType === 'Sale_Return' ||
item.refType === 'Receipt_Refund'
) {
item.cost = tmpAvgCost
condition = true
}
const balQty = _.round(tmpLastBalQty + item.qty, decimalNumber())
let balAmount = _.round(
tmpLastBalAmount + item.qty * item.cost,
decimalNumber()
)
let avgCost = _.round(balAmount / balQty, decimalNumber())
// Check balQty = 0
if (balQty === 0) {
balAmount = 0
avgCost = item.cost
}
if (!_.isFinite(avgCost)) {
avgCost = item.avgCost
}
let data = {
_id: item._id,
refType: item.refType,
refId: item.refId,
tranDate: item.tranDate,
itemId: item.itemId,
cost: condition ? avgCost : item.cost,
price: item.price,
qty: item.qty,
balanceQty: balQty,
avgCost: avgCost,
balanceAmount: balAmount,
warehouseId: item.warehouseId,
branchId: item.branchId,
}
//
ids.push(item._id)
tmpDoc.push(data)
//
tmpAvgCost = avgCost
tmpLastBalAmount = balAmount
tmpLastBalQty = balQty
})
Inventories.remove({ _id: { $in: ids } })
await Inventories.rawCollection().insertMany(tmpDoc)
return 'success'
} catch (error) {
console.log(error)
throwError(error)
}