jas*_*007 7 error-handling joi graphql
当我验证 graphql 参数时,我在密码字段中收到类似这样的错误消息。
"password" with value "" fails to match the required pattern: /^(?=\\S*[a-z])(?=\\S*[A-Z])(?=\\S*\\d)(?=\\S*[^\\w\\s])\\S{8,30}$/"
Run Code Online (Sandbox Code Playgroud)
我不想在错误消息中显示正则表达式模式。因此,我尝试为密码字段设置自定义错误消息,但它仍然显示正则表达式模式。
"password" with value "" fails to match the required pattern: /^(?=\\S*[a-z])(?=\\S*[A-Z])(?=\\S*\\d)(?=\\S*[^\\w\\s])\\S{8,30}$/"
Run Code Online (Sandbox Code Playgroud)
我认为它不是通过选择正则表达式object.regex。请帮忙。
Rvy*_*dey 18
要了解抛出的错误,您可以调试错误对象(通过记录它),然后找到type错误的原因。
例子:
const Joi = require('@hapi/joi');
const joiSchema = Joi.object().keys({
password: Joi.string()
.min(8)
.regex(/^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,30}$/)
.required()
.label("Password")
.messages({
"string.min": "Must have at least 8 characters",
"object.regex": "Must have at least 8 characters",
"string.pattern.base": "enter your custom error here..."
})
});
const validationResult = joiSchema.validate({ password: "2" }, { abortEarly: false });
console.log(validationResult.error.details.map(errDetail => errDetail.type), validationResult.error);
Run Code Online (Sandbox Code Playgroud)
这输出["string.min", "string.pattern.base"]. details由于 string.min 和 string.pattern.base 有 2 个错误,并abortEarly设置为 false。
| 归档时间: |
|
| 查看次数: |
10245 次 |
| 最近记录: |