2016-04-27 16 views
0

私はapi要求を検証するためにjoiを使用しています。エラーメッセージがスラッシュ '\'文字でフィールド名を返す以外はすべて良いです。Joi.jsが奇妙なエラーメッセージを返す

{ 
    "message": "validation error", 
    "error": { 
    "status": 400, 
    "statusText": "Bad Request", 
    "errors": [ 
     { 
     "field": "email", 
     "location": "body", 
     "messages": [ 
      "\"email\" must be a valid email" 
     ], 
     "types": [ 
      "string.email" 
     ] 
     } 
    ] 
    } 
} 

誰でもこの問題が発生しますか?

答えて

0

デフォルトでは、変数名は引用符で囲まれ、引用符はです。私はこれの理由で多くを見つけることができなかったかもしれないので、他の誰かがそこに体重を測ることができます。

しかし、この動作をオーバーライドするには、override the language optionあなたはjoi.validate()を呼び出し、オプションのoptionsパラメータを渡すことができます。この例では、文字列のエスケープをオーバーライドしています。

var joi = require('joi'); 

var schema = joi.object().keys({ 
    name: joi.string().required() 
}); 

var x = { 
    name: 123 
}; 

var options = { 
    language: { 
     string: { 
      base: '{{key}} must be a string' 
     } 
    } 
}; 

var result = joi.validate(x, schema, options); 

console.log(JSON.stringify(result, null, 2)); 

あなたoptionskeyパラメータを指定し、すべての種類のエスケープ文字を上書きします。最後のスペースに注意してください。 languageを無効にする方法について

var options = { 
    language: { 
     key: '{{key}} ' 
    } 
}; 

より詳細な例は、hereを見つけることができます。

関連する問題