2017-07-07 5 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

は突然ので、署名errors.add(attr, message, code)addError方法があります:

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

これは動作しますが、あなたは customコードとメッセージを持っています覚えておいて、ラフから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": "..." 
    } 
} 
関連する問題