如何解决此问题?我总是得到1000的余额。我希望余额为3000。
var checked = [{ _id: '5d96a7ba5ccc6a5850ee5ae7'}, {_id: '5d96a7ba5ccc6a5850ee5ae7' }, {_id: '5d96a7ba5ccc6a5850ee5ae7}];
var income = 1000;
checked.forEach(async x => {
let balance = CustomerBalanceModel.findOne({user_id: x._id}).exec();
let balanceValue = {
balance: (balance + income),
user_id: x._id,
updated_at: dateFormatter.date(date)
}
await CustomerBalanceModel.findOneAndUpdate({user_id: x._id}, balanceValue, { upsert: true, new: true }).exec();
})
答案 0 :(得分:1)
您忘记在第一次异步操作之前输入await
:
let balance = await CustomerBalanceModel.findOne({user_id: x._id}).exec();
因此,只需在await
之前添加CustomerBalanceModel.findOne(...)