2

我正在使用joi来验证我的 api 请求。除了错误消息返回带有斜杠“\”字符的字段名称外,一切都很好。

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

有人遇到这个问题吗?

4

1 回答 1

2

默认情况下,您的变量名称放在引号中,并且这些引号使用反斜杠字符进行转义。我找不到太多关于此的原因,所以也许其他人可以在那里权衡。

但是要覆盖此行为,您可以在调用并传入可选参数时覆盖该language选项。这个例子只是覆盖了字符串的转义。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));

要覆盖所有类型的转义字符,key请在options. 注意最后的空格。

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

language可以在此处找到有关如何覆盖的更详细示例。

于 2016-04-27T13:20:57.817 回答