【发布时间】:2022-10-01 10:54:02
【问题描述】:
我有这个 joi 模式,它要求如果你传入id,你还必须传入type。
joi
.object()
.required()
.keys({
id: joi.string(),
type: joi.string(),
expirationTime: dateSchema,
createdBy: joi.string().uuid(),
createdAt: dateSchema,
// Allow \"or\" to recursively reference this entire schema.
// https://hapi.dev/module/joi/api/?v=17.1.1#linkref
or: joi.array().items(joi.link(\'/\')).min(2),
// Allow \"and\" to recursively reference this entire schema.
// https://hapi.dev/module/joi/api/?v=17.1.1#linkref
and: joi.array().items(joi.link(\'/\')).min(2)
});
.with(\'id\', \'type\'); // If searching for id you must also search by type
我想这样如果你传入id,你也必须传入type,除非它嵌套在and下。
例如这应该失败,因为它没有id AND type
{
id: \'foo\',
}
但这应该会通过,因为它在根级别确实有id 和type,并且只有id 嵌套在and 下。
{
id: \'foo\',
type: \'bar\',
and: [{ id: \'foobar\' }, { createdBy: \'me\' }]
}
-
or/and \"children\" 看起来像一个不同的模式,有一些共享的组件。他们是否打算支持或/和递归?
-
是的,它旨在支持和/或递归。唯一的区别是当嵌套在
and或or下时,id也不需要type。