2015-12-08 53 views
0

我有一个复杂的数据类型,我希望将其存储在猫鼬模型中。假设我的模式是如下路径验证中的Mongoose自定义错误消息

dataSchema : { 
    name : 'string', 
    body : 'object' 
} 

savefindOneAndUpdate对我的模型,我想使用抛出自定义错误消息的解析器对身体进行一些验证。

我的验证的电流处理如下:

dataSchema.path('body').validate(function(body,callback){ 

    // Attempt to parse the structure 
    try{ 
     parse(body) 
     callback(true) 
    } catch(me) { 
     // callback(me) // does not help! 
     callback(false) 
    } 


}, 'Unable to parse body') 

一起

dataSchema.pre('findOneAndUpdate', function(next) { 
    this.options.runValidators = true; 
    next(); 
}); 

这似乎按预期方式工作。不过,我想从验证器(当前:'Unable to parse body')自定义错误消息,以便我可以在catch语句中传播错误信息me

这可能吗?

回答

0

在为validation猫鼬文档,下跌在页面的底部也方便各国现在

,我们已经介绍了验证,让我们来看看你会如何 运用先进的验证与猫鼬的中间件。

可以发现here

dataSchema.pre('save',function(next){ validate(this, next) } 
dataSchema.pre('findOneAndUpdate', function(next){ validate(this, next) } 

使用中间件我的问题是使用一个辅助功能

function validate(rec, next){ 
    try{ 
     // Attempt to parse the object 
     parse(rec.object) 
     next() 
    } catch(me){ 
     // report fail - Note should use mongoose ValidationError class 
     next(me) 
    } 

} 

这是有线起来使用下面的钩子解决

相关问题