Validation 路径验证中的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

我有一个复杂的数据类型,我希望存储在mongoose模型中。假设我的模式如下

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) }