モデルを2回連続して更新するのに問題があります。これは私の小さな、一般的な、更新ハンドラです:mongoの連続した更新を2回連続して行います
let updateHandler = function(prop, data, req, res, done) {
Ingredient.update({ name: req.body.ingredientName }, {
[prop]: data
}, function(err, raw) {
if (err) {
console.log(err);
res.send('/error');
} else {
console.log(raw);
if(done) res.send('/ingredients');
}
})
}
そして、これらは私のコールです:私はupdateHandlerは少し奇妙である知っている、そしてあなた自身に尋ねるかもしれない
updateHandler('name', req.body.ingredientNewName, req, res, false);
updateHandler('price', parseFloat(req.body.ingredientNewPrice), req, res, true);
:「なぜ地球上あなたはこれをしていますか? "しかし、それはこの質問のポイントではありません。なぜこれが機能していないのか理解したい。
両方の更新プログラムを実行すると、最初の更新プログラムのみが実際にモデルを変更します。私はこれを返す:
私は両方の更新が起こるが、2番目の1は何も変更しないという事実を知っている。何でも奇妙のは作られている何も変更はありません最初のアップデートの場合、2回目の更新が動作し、修正を行っていることである:
{ ok: 1, nModified: 0, n: 1 }
{ ok: 1, nModified: 1, n: 1 }
が、私は本当にここで何が起こっているか理解したいです。私はそれが非合理的な問題かもしれないという気持ちがあるかもしれません。その場合、おそらく私は約束でこれを回避することができました。しかし、更新は実際に実行されているので、おそらくmongo/mongooseで何か?
更新ステートメントの第2引数に '$ set'を使用できますか? – hyades