我想在更新文档时使用自定义验证。尽管从版本4.8.0开始可用(根据docs),但验证者不会使用$addToSet
字段调用更新。这是我的文档架构:
var schema = mongoose.Schema({
registered: {
type: [
{
type: ObjectId,
ref: "User"
}
],
validate: {
validator: function(v) {
return (v.length <= this.getUpdate().$set.maxRegistration);
}
}
},
maxRegistration: {
type: Number
}
});
var Blob = mongoose.model("Blob", schema);
稍后我称之为:
Blob.findOneAndUpdate(
{ name: "blob1" },
{ $addToSet: { playersRegistered: "76741abc983" } },
{ runValidators: true, context: "query" }
).then(...)
但未调用验证程序。然而,当创建新的Blob
时调用它。我正在运行Mongoose v4.9.5,所以我不知道问题出在哪里。谢谢你的帮助!