仅验证更大的 Joi 模式的一个字段

Validate only one single field of a bigger Joi schema

我想使用 Joi 进行表单字段验证,并希望坚持使用一个大架构对象来验证整个表单,但我想 运行 在一个表单字段之后进行单项验证已更改 - 即在第一个表单字段收到值后,我不想验证完整的表单,而只想更新一个字段。我正在设想

const schema = Joi.object({
    username: Joi.string()
        .alphanum()
        .min(3)
        .max(30)
        .required(),

    password: Joi.string()
        .pattern(new RegExp('^[a-zA-Z0-9]{3,30}$'))
        .required(),
});
const validationResult = schema.username.validate('Tommy');

这可能吗?

是的,通过将用户名模式提取到单独的模式,如下所示:

const username_schema = Joi.string()
        .alphanum()
        .min(3)
        .max(30)
        .required();

const schema = Joi.object({
    username: username_schema,
    password: Joi.string()
        .pattern(new RegExp('^[a-zA-Z0-9]{3,30}$'))
        .required(),
});

const validationResult = username_schema.validate('Tommy');