Validation 路径验证中的Mongoose自定义错误消息
我有一个复杂的数据类型,我希望存储在mongoose模型中。假设我的模式如下Validation 路径验证中的Mongoose自定义错误消息,validation,mongoose,Validation,Mongoose,我有一个复杂的数据类型,我希望存储在mongoose模型中。假设我的模式如下 dataSchema : { name : 'string', body : 'object' } 对于我的模型,在save或findOneAndUpdate期间,我希望使用抛出自定义错误消息的解析器对主体执行一些验证 我目前对验证的处理如下: dataSchema.path('body').validate(function(body,callback){ // Attempt to p
dataSchema : {
name : 'string',
body : 'object'
}
对于我的模型,在save
或findOneAndUpdate
期间,我希望使用抛出自定义错误消息的解析器对主体执行一些验证
我目前对验证的处理如下:
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();
});
这似乎和预期的一样。但是,我希望自定义来自验证器的错误消息(当前为:“无法解析正文”),以便在catch语句中传播错误信息me
这可能吗?在mongoose文档中,它在页面底部方便地陈述
现在我们已经覆盖了验证,让我们来看看您可能如何 使用Mongoose的中间件处理高级验证
可以找到 使用中间件,我的问题通过一个helper函数得到解决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)
}
}
使用以下挂钩将其连接起来:
dataSchema.pre('save',function(next){ validate(this, next) }
dataSchema.pre('findOneAndUpdate', function(next){ validate(this, next) }