我想使用 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
对象中。
https://stackoverflow.com/questions/23760253/
相关文章:
linux - Errr 'mongo.js:L112 Error: couldn' t 连接到服务
java - 如何通过Java在MongoDB中一次插入多个文档
mongodb - 如何使用 Robomongo 连接到 MongoDB Atlas?
java - 如何使用 Java mongodb 驱动程序中的 "_id"字段查询文档?
node.js - 使用 mongoose 在 mongodb 中设置集合的到期时间
mongodb - 如何在 MongoDB 中创建嵌套索引?