假设我有一个Express模型:
var SchemaDescription = {};
var Model = = new mongoose.Schema(SchemaDescription);
Express允许在SchemaDescription中调整数据验证。在保存时它可以很好地工作,但是在更新时,由于猫鼬性质,它没有被调用,并且没有干净的方式来调用它。
我尝试Model.pre('update', ...);
但是在写入数据库之前没有找到访问/更正模型数据的方法:因为复杂的验证逻辑,例如,在检查之前重新格式化一些数据。
逻辑解决方案是将验证代码保存/更新控制器的处理程序,但这会导致代码重复。为了保持MVC模式和保存一样,对于更新,我想将一个公共方法放到模型或模式中,它获取输入数据并验证它们。
我的尝试看起来像:
Model.prototype.validate = function(input, isUpdate) {...};
或
SchemaDescription.validate = function(...) {...};
以不同的组合。
响应始终如"Cannot set property 'validate' of undefined"
答案 0 :(得分:1)
你没有Express模型,你有一个Mongoose模型。根据最新文档,您可以在更新时明确激活验证:http://mongoosejs.com/docs/validation.html#update-validators