2016-04-27 155 views
0

我正在使用joi來驗證我的apis請求。所有的東西都很好,除了錯誤消息以斜槓「\」字符返回字段名稱。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

默認情況下,您的變量名稱將放在引號中,並且這些引號是escaped with the backslash character。我找不到這個原因,所以也許別人可以在那裏權衡。

但是,要覆蓋此行爲,當您撥打joi.validate()並傳入可選options參數時,您可以override the language option。這個例子只是重寫字符串的轉義。

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

要覆蓋轉義字符的所有類型,在你的options指定key參數。注意最後的空間。

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

如何覆蓋language更詳細的例子可以發現here