私はかなり大きな移行を書いていて、このコード(coffeescript)を持っていました:
db.users.find().forEach (user)->
try
#some code changing the user depending on the old state
db.users.save(user)
print "user_ok: #{user._id}"
catch error
print "user_error: #{user._id}, error was: #{error}"
いくつかのエラーが発生しました。しかし、それらはすでに処理されたユーザーで発生しました:
user_ok: user_1234
#many logs
user_error: user_1234 ...
ループが処理済みのオブジェクトを取得するのはなぜですか?
私はやった:
backup = { users: [] }
db.users.find().forEach (user)->
try
#some code changing the user depending on the old state
backup.users.push user
print "user_ok: #{user._id}"
catch error
print "user_error: #{user._id}, error was #{error}"
#loop backup and save
そして、今はうまく機能していますが、本当に奇妙に思えます。そのすべての背後にあるポイントは何ですか?