我想使用 mongoose 自定义验证来验证 endDate 是否大于 startDate。如何访问 startDate 值?使用this.startDate时,不起作用;我不确定。
var a = new Schema({
startDate: Date,
endDate: Date
});
var A = mongoose.model('A', a);
A.schema.path('endDate').validate(function (value) {
return diff(this.startDate, value) >= 0;
}, 'End Date must be greater than Start Date');
diff
是一个比较两个日期的函数。
最佳答案
您可以使用 Mongoose 'validate'
middleware 来做到这一点这样您就可以访问所有字段:
ASchema.pre('validate', function(next) {
if (this.startDate > this.endDate) {
next(new Error('End Date must be greater than Start Date'));
} else {
next();
}
});
请注意,在调用 next
以报告验证失败时,您必须将验证错误消息包装在 JavaScript Error
对象中。
关于node.js - 使用 2 个字段的 Mongoose 自定义验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23760253/