【问题标题】:Mongoose custom error message in path validation路径验证中的猫鼬自定义错误消息
【发布时间】:2016-03-13 22:46:37
【问题描述】:

我有一个复杂的数据类型,我希望将其存储在猫鼬模型中。假设我的架构如下

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

这可能吗?

【问题讨论】:

    标签: validation mongoose


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-09-05
      • 1970-01-01
      • 2016-04-18
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 2014-05-01
      • 1970-01-01
      • 2013-04-08
      相关资源
      最近更新 更多