[Mongoose] update(), findOneAndUpdate() で validation runValidators: true を設定する
Mongoose の update(), findOneAndUpdate() はデフォルトで validator は実行されないですが runValidators: true オプションを指定すると、validator を実行することができます。
Update ValidatorsIn 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 を実行したい、現場からお送りしました。