我希望Joi拒绝“”或“”之类的字符串,我该如何实现?
答案 0 :(得分:0)
使用trim
和min
:
const schema = Joi
.string()
.trim()
.min(1)
.required();
测试:
console.log(schema.validate(' ')); // "value" is not allowed to be empty
console.log(schema.validate('')); // "value" is not allowed to be empty
console.log(schema.validate(' foo')); // value: 'foo'
console.log(schema.validate('foo ')); // value: 'foo'
答案 1 :(得分:0)
如果要防止空字符串
Joi.string().required().min(1)
答案 2 :(得分:0)
有一个验证 csv 文件的案例(通过 Papa Parse),并且要求 Joi 详细地失败 trim()
验证。 trim()
的正常行为是修复空格,这是明智的。
我们希望通过 trim()
验证错误,而不是自动修复。
const schema1 = Joi.object({ username: Joi.string().trim() })
const hasValidationError1 = schema1.validate({ username: ' aslezak ' })
// hasValidationError1 { value: { username: 'aslezak' } }
const schema2 = Joi.object({ username: Joi.string().trim() })
const hasValidationError2 = schema2.validate(
{ username: ' aslezak ' },
{ abortEarly: false, convert: false, label: ['path', 'key', true] }
)
// hasValidationError2 = {
// value: { username: ' aslezak ' },
// error: { ValidationError: [ `"username" must not have leading or trailing whitespace.` ] },
// }
在 joi.dev 文档中引用 validate()
方法有助于确定配置选项。