2016-04-24 15 views
0

この問題を解決する適切な方法を知りたいと思います。私は自分のノードコードでmongoose経由でコレクションを参照しています。私は文書を修正する特定の機能を持っており、編集の各セクションの後に保存したい(実際にはコード内で別の場所に保存する必要があるかどうかわからないため)。最後に保存したものを保存するかどうかを判断するためにかなり複雑なコードを書くこともできますが、正当な理由がないと思われるコードは非常に複雑になります。ノード - 2回保存した後にモンゴースを2回押して回避する方法

基本的に私のコードはこのように見える終わる:

collection.attributeArray.push(item); 
collection.save(); 
collection.save(); 

これはattributeArrayの結果は、この

[item, item] 

の代わりに、単に

[item] 

への合理的な方法はあるように見えますどのセーブがあなたの最後のセーブになるかを知らずにこれを達成しますか?

答えて

1

Mongooseトラックは、アトミックな$ pushAll操作を登録することによってドキュメント配列の変更をプッシュします。この問題を回避するにはどうすればよいでしょうか

collection.attributeArray = collection.attributeArray.concat([ item ]); 
+0

私はこれが問題に近づく最善の方法だと思います。 –

0

すべてのコードブロックがないと問題が発生するのは本当に難しいです。コードブロック全体を追加してください。

しかし、私は推測しています。おそらく、collection.attributeArray.push(item);がループしています。 itemを2回押すと、複数回保存されます。私が言及したように、それはちょうど推測です。そうしないと、二重保存は項目を二度追加するのに影響しません。

別の問題では、なぜ.save()を2回使用しますか?あなたのコールバック(またはコードの終わり)を呼び出す前に一度だけ使用してください。

関連する問題