NodeJS 如何使用对象中的常量值验证字符串字段?

h5qlskok  于 2023-04-05  发布在  Node.js
关注(0)|答案(1)|浏览(107)

我想对这段代码进行改进,将String值保存为常量

const toValidate = Joi.object({
    emailTiming: Joi.string().valid('DAILY','WEEKLY','MONTHLY','QUARTERLY','MEDIAN','YEARLY').required()
});

所以我创建了这个对象:

EMAIL_DISPATCH_TIMING: {
    DAILY: 'DAILY', 
    WEEKLY: 'WEEKLY', 
    MONTHLY: 'MONTHLY', 
    QUARTERLY: 'QUARTERLY', 
    MEDIAN: 'MEDIAN', 
    YEARLY: 'YEARLY'
  }

我想知道如何从这个对象中获取值,并将它们设置为字段的有效值。
现在我试过了,没有用-

emailTiming: Joi.string().valid(Object.values(EMAIL_DISPATCH_TIMING)).required(),
u4dcyp6a

u4dcyp6a1#

valid接受rest参数,因此需要使用spread运算符:

const items = {
  DAILY: 'DAILY',
  WEEKLY: 'WEEKLY',
  MONTHLY: 'MONTHLY',
  QUARTERLY: 'QUARTERLY',
  MEDIAN: 'MEDIAN',
  YEARLY: 'YEARLY'
};

const toValidate = Joi.object({
  emailTiming: Joi.string().valid(...Object.values(items)).required()
});

相关问题