0
ノードjにはまだ経験はありませんが、私は学んでいます。ノードJS Array、Foreach、Mongoose、Synchronous
だから私の問題。例: 私はmongooseとasyncモジュールで小さなアプリを持っています。ユーザーコレクションのmongodbには、1人のフィールドバランス= 100のユーザーがいます。
var arr = [1,2,3,4];
var userId = 1;
async.forEachSeries(arr, (item, cb) =>{
async.waterfall([
next => {
users.findById(userId, (err, user) =>{
if (err) throw err;
next(null, user)
});
},
(userResult,next) =>{
var newBalance = userResult.balance - item;
users.findByIdAndUpdate(userId, {balance:newBalance}, err =>{
if (err) throw err;
next(null, userResult, newBalance);
})
}
],(err, userResult, newBalance) =>{
console.log(`Old user balance: ${userResult.balance} New user balance: ${newBalance}`);
});
cb(null)
});
と私は
Old user balance: 100 New user balance: 98
Old user balance: 100 New user balance: 99
Old user balance: 100 New user balance: 97
Old user balance: 100 New user balance: 96
だから基本的に非同期async.waterfallを呼び出しているforeachのような結果を受けています。私の質問どのようにforeyncを行うにはアイテムごとに、私はそれぞれの、forEach、eachSeries、約束の有無にかかわらず試しました。
Old user balance: 100 New user balance: 99
Old user balance: 99 New user balance: 97
Old user balance: 97 New user balance: 94
Old user balance: 94 New user balance: 90
は、最終的なコールバックが呼ばれましたどこに問題がある
非常にありがとうございます!それは今通りに動作します! – billibob