路径验证中的Mongoose自定义错误消息

时间:2015-12-08 20:42:10

标签: validation 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();
});

这似乎按预期工作。但是,我想自定义验证程序的错误消息(当前:'无法解析主体'),以便我可以在catch语句中传播错误信息me

这可能吗?

1 个答案:

答案 0 :(得分:0)

validation的mongoose文档中,在页面底部方便地说明

  

现在我们已经涵盖了验证,让我们来看看你的情况   使用Mongoose的中间件处理高级验证。

可以找到here

使用中间件我的问题是使用帮助函数解决的

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