Mongoosejs设置/保存与更新validation

我创build了一些schema.pre('save', function(){...}); validation,但后来学到更新没有触发它。 我真的想更新validation,所以我开始这样做:

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

这样做有什么不好吗? 这似乎是合乎逻辑的,但我还没有看到这样做更新多次,因为我已经看到他们用doc.update({}); 或者MySchema.findXxxAndUpdate({},{}) 。 我意识到update只是通过一切通过本地驱动程序,所以设置/保存会招致一些性能处罚? primefaces性如何?

你的方法的主要缺点是你失去了更新的primefaces性,因为另一个更新可能发生在findOne调用和doc.save调用doc.save

您还失去了像$addToSet这样的各种更新运算符的能力,这些运算符提供了testing逻辑,否则您必须在代码中实现这些逻辑。