Mongoose中的$ addToSet不运行自定义更新验证

时间:2017-04-18 08:30:05

标签: node.js mongodb mongoose

我想在更新文档时使用自定义验证。尽管从版本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,所以我不知道问题出在哪里。谢谢你的帮助!

0 个答案:

没有答案