2015-12-08 73 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) 
    } 

} 

這是有線起來使用下面的鉤子解決

相關問題