【发布时间】:2022-01-01 17:20:45
【问题描述】:
我有两个用户customer 和manager。 manager 在其架构中有一些额外的字段。所以为此我创建了两个 joi 模式对象:
- 验证通用架构(针对客户和经理)和
- 验证经理的一些额外字段。
对于manager 验证,我必须验证两个 joi 模式对象。
const commonSchema = Joi.object({
name: Joi.string().min(3).max(255).required(),
email: Joi.string().email().required(),
password: Joi.string().min(3).max(15).required(),
...
}).options({ allowUnknown: true });
const managerSchema = Joi.object({
contactNumber: Joi.string()
.length(10)
.pattern(/^[0-9]+$/)
.required(),
creditCardNum: Joi.string().length(16).required(),
isApproved: Joi.boolean().default(false),
...
}).options({ allowUnknown: true });
const { errorOne } = commonSchema.validate(manager);
const { errorTwo } = managerSchema.validate(manager);
这可行,但如果有另一种方法可以验证manager 的架构和仅customer 的commonSchema,而不使用options.({ allowUnknown: true })。因为我不想允许所有未知字段。
【问题讨论】:
-
你用代码定义这个,你不能使用你传递给
Joi.object()的同一个对象两次吗?