Joi.js返回奇怪的错误信息

问题描述:

我正在使用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" 
     ] 
     } 
    ] 
    } 
} 

任何人都有这个问题吗?

默认情况下,您的变量名称将放在引号中,并且这些引号是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