1

いくつかの検証を作成しましschema.pre('save', function(){...});たが、更新によってトリガーされないことがわかりました。更新の検証が本当に欲しかったので、これを始めました:

MySchema.findOne({...}, function(doc) {
  doc.set(req.body);
  doc.save(function(){...});
});

これを行うことの欠点はありますか?論理的に思えますが、この方法で更新が行われるのを見たことはありませdoc.update({});MySchema.findXxxAndUpdate({},{})。すべてをネイティブドライバーに渡すupdateだけなので、設定/保存するとパフォーマンスが低下するのでしょうか? 原子性はどうですか?

4

1 に答える 1

1

findOneこのアプローチの主な欠点は、更新の原子性が失われることです。これは、呼び出しと への呼び出しの間に別の更新が発生する可能性があるためdoc.saveです。

$addToSetまた、コードに実装する必要があるテスト済みのロジックを提供するような、さまざまな更新演算子の機能も失います。

于 2013-07-30T15:01:19.523 に答える