2016-12-17 109 views
0
key: { 
    type: 'String', 
    required: [true, 'Required'], 
    trim: true 
} 

每當我與自定義驗證驗證它,將其轉換爲「字符串」,這 結果總是有效的類型。 像「鑰匙」應該只接受「字符串」,如果「數字」它應該拋出驗證,而不是鑄造它。我如何可以驗證型貓鼬自定義驗證

回答

0

您可以將驗證函數傳遞給貓鼬模式的驗證器對象。 請參閱下面的示例架構,它具有用於驗證電話號碼架構的自定義驗證功能。

var userSchema = new Schema({ 
    phone: { 
    type: String, 
    validate: { 
     validator: function(v) { 
     return /\d{3}-\d{3}-\d{4}/.test(v); 
     }, 
     message: '{VALUE} is not a valid phone number!' 
    }, 
    required: [true, 'User phone number required'] 
    } 
}); 

,這驗證可以通過聲明

var User = db.model('user', userSchema); 
var user = new User(); 
var error; 

user.phone = '555.0123'; 
error = user.validateSync(); 
assert.equal(error.errors['phone'].message, 
    '555.is not a valid phone number!'); 

,你可以有自己的正則表達式匹配與任何圖案你想要的字符串應該是進行測試。

+0

請仔細閱讀問題 – Moniv