向Express模型添加方法

时间:2016-05-05 11:02:40

标签: node.js validation express

假设我有一个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"

  • 是否有方法将自定义公共函数成员放入Express模型/模式以便在控制器中调用?
  • 可以使用哪种方法验证保存和更新数据,无需代码重复,或/并将验证逻辑放入控制器?

1 个答案:

答案 0 :(得分:1)

你没有Express模型,你有一个Mongoose模型。根据最新文档,您可以在更新时明确激活验证:http://mongoosejs.com/docs/validation.html#update-validators