给出这样的定义:
const querySchema = joi.object({
one: joi.string().min(1).max(255),
two: joi.string().min(1).max(255),
three: joi.string().min(1).max(255),
});
有没有办法要求至少一个这些字段?我不在乎哪一个。
注意:为此SO question提供的解决方案不能为我提供服务,因为我有7个字段并且可能会增长,因此执行所有可能的组合是不行的。< / p>
在Joi API Reference中找不到可能对此用例有用的任何方法。
非常感谢任何帮助。
答案 0 :(得分:3)
如果确实不关心需要哪一个,那么您可以使用object().min(1)
确保对象中至少有一个键。
const querySchema = joi.object({
one: joi.string().min(1).max(255),
two: joi.string().min(1).max(255),
three: joi.string().min(1).max(255),
}).min(1);
必须至少需要一个密钥(one
,two
,three
)。名称与这三个不同的密钥将被拒绝。
答案 1 :(得分:2)
const schema = joi.object({
a: joi.number(),
b: joi.number(),
}).or('a', 'b');
如果需要一组特定的密钥,这种方法很好,而当需求很大时,@ Ankh的更好,因为我这个问题标题并且你有很多密钥,所以我选择他的答案而不是我的对了。
只是想以另一种方式离开这里。