[Mongoose] update(), findOneAndUpdate() で validation runValidators: true を設定する
Mongoose の update(), findOneAndUpdate() はデフォルトで validator は実行されないですが runValidators: true オプションを指定すると、validator を実行することができます。
runValidators の使い方
Update Validators
In the above examples, you learned about document validation. Mongoose also supports validation for update() and findOneAndUpdate() operations. Update validators are off by default – you need to specify the runValidators option.
To turn on update validators, set the runValidators option for update() or findOneAndUpdate(). Be careful: update validators are off by default because they have several caveats.
var toySchema = new Schema({ color: String, name: String }); var Toy = db.model('Toys', toySchema); Toy.schema.path('color').validate(function (value) { return /blue|green|white|red|orange|periwinkle/i.test(value); }, 'Invalid color'); var opts = { runValidators: true }; Toy.updateOne({}, { color: 'bacon' }, opts, function (err) { assert.equal(err.errors.color.message, 'Invalid color'); });
以下、日本語に翻訳した文章です。
Mongoose は update() および findOneAndUpdate() でも validation をサポートしています。Update validator はデフォルトではオフです。Update validator を実行するには runValidators オプションを指定する必要があります。
Update validator を有効にするには、update() または findOneAndUpdate() に対して runValidators オプションを設定します。
[注意]:いくつかの警告があるので、Update validator はデフォルトでオフです。
以上、Mongoose の update(), findOneAndUpdate() でも validator を実行したい、現場からお送りしました。