繁体   English   中英

是否可以从一组定义的字段中要求至少一个字段?

[英]Is it possible to require at least one field from a set of defined fields?

鉴于这样的定义:

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问题提供的解决方案不适合我,因为我有7个字段并且它们可能会增长,所以做所有可能的组合是不行的。

Joi API Reference中找不到可能对此用例有用的任何方法。

任何帮助是极大的赞赏。

如果你真的不在乎需要哪一个,那么你可以通过使用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);

必须至少需要一个密钥( onetwothree )。 名称与这三个不同的密钥将被拒绝。

除了@Ankh建议的另一种方法之外,找到另一种方法,就是在文档中但我以前找不到它:

const schema = joi.object({
   a: joi.number(),
   b: joi.number(),
}).or('a', 'b');

如果需要一组特定的密钥,这种方法是好的,而当需求很大时,@ Ankh是更好的,因为我这个问题标题并且你有很多密钥,所以我选择他的答案而不是我的答案。

只想离开这里做另一种方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM