【发布时间】:2022-11-27 03:46:59
【问题描述】:
如果特定元素不存在,我如何使用 Joi 抛出警告而不是错误?
我的代码:
const Joi = require('joi');
const schema = Joi.object({
username: Joi.string()
.alphanum()
.min(3)
.max(30)
.required(),
birth_year: Joi
.number()
.min(2000)
.warn()
});
console.log({ error, warning, value } = schema.validate({ username: 'abc', birth_year: 1994 }));
console.log({ error, warning, value } = schema.validate({ username: 'abc'}));
当出生年份不符合我要求的最低要求时,我可以成功看到警告
'"birth_year" 必须大于或等于 2000'
但是,如果出生年份不存在,我也想警告。
目前我没有收到警告或错误。如果我将
.required()添加到出生年份模式,如果出生年份不存在,它将出错。我试过这样做:birth_year: Joi .number() .min(2000) .warn() .required() .warn()然而,这会产生运行时错误,因为 .warn() 会终止架构选项。我也尝试将 .required 移动到第二个选项,但它再次出错,而不是警告。
【问题讨论】:
-
曾经解决过这个问题吗?试图完成同样的事情。
-
嘿@JonathanCorrin。我从来没有解决过这个问题,我不得不单独进行自定义检查以检查该字段是否存在
标签: javascript schema joi