2017-07-07 49 views
1

Here是從文檔:如何在自定義回送驗證中提供動態消息?

User.validate('name', customValidator, {message: 'Bad name'}); 
function customValidator(err) { 
    if (this.name === 'bad') err(); 
}); 
var user = new User({name: 'Peter'}); 
user.isValid(); // true 
user.name = 'bad'; 
user.isValid(); // false 

有驗證過程中修改message變量的方法嗎?例如,this.name === 'bad'的消息是Bad name,但是當this.name === 'very bad'的消息應該是Very Bad name。如何做到這一點?

回答

0

突然有一個addError方法與簽名errors.add(attr, message, code),所以:

User.validate('name', customValidator); 
function customValidator(err) { 
    if (this.name === 'bad') { 
     this.errors.add('name', `Name is bad`, 'name.bad') 
     err(); 
    } 
    if (this.name === 'very bad') { 
     this.errors.add('name', `Name is very bad`, 'name.very.bad') 
     err(); 
    } 
}); 

這工作,但請記住,你將有+1custom代碼和信息,請參閱從粗糙error.details.codes.nameerror.details.messages.name路徑json下面:

{ 
    "error": { 
    "statusCode": 422, 
    "name": "ValidationError", 
    "message": "The `Entity` instance is not valid. Details: `name` Name is very bad (value: very bad).", 
    "details": { 
     "context": "Entity", 
     "codes": { 
     "name": [ 
      "name.very.bad", 
      "custom" 
     ], 
     }, 
     "messages": { 
     "name": [ 
      "Name is very bad", 
      "is invalid" 
     ] 
     } 
    }, 
    "stack": "..." 
    } 
}