我希望使用此代码并对其进行增强,以便将字符串值保存为常量

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(),

推荐答案

valid接受REST参数,因此需要使用扩散运算符:

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()
});

Node.js相关问答推荐

Express 4.18正文解析

在Android Studio中react 本机构建失败:未正确检测到Node.js版本

获取驱动器文件夹的直接子文件夹时出现问题

EJS ForEach循环标记

如何在 ElectronJS 中播放音频文件

将 POST 的 json 变量格式化为 lambda

无法使用 Express 设置会话 cookie 的过期日期

try 使用 pdf.js 时 pdf.getPage 不是函数

为什么它无法发送发布请求并更改为 chrome 中的获取方法?

如何防止 Chrome 通过 Selenium 崩溃?

只要我在后端正确验证所有内容,就可以将这些数据存储在本地存储中吗?

Express.js - 监听请求中止

访问 Mongoose 查询之外的变量

在将用作 nodejs/expressjs 中的中间件的函数中使用 keycloak.protect()

来自 child_process.exec 的错误没有这样的设备或地址,管道有帮助.为什么?

使用 node.js 执行一个 exe 文件

代理后面的凉亭

npm package.json 操作系统特定脚本

在 react-router v4 中使用 React IndexRoute

Mongoose:模式与模型?