【发布时间】:2020-10-02 12:30:39
【问题描述】:
是否可以对 Joi 模式的属性名称使用枚举?
例如,给定以下string-constants.enum.js 文件:
export default {
INPUT_BUSINESS_NAME: 'business-name',
INPUT_ADDRESS_LINE_1: 'address-line-1'
// etc...
}
我想做的是:
const stringConstants = require('path/to/string-constants.enum')
const Joi = require('@hapi/joi')
const businessDetailsSchema = {
[stringConstants.INPUT_BUSINESS_NAME]: Joi.string().required(),
[stringConstants.INPUT_ADDRESS_LINE_1]: Joi.string().required(),
// etc...
}
但是,当验证包含“business-name”或“address-line-1”字段的字段集时,它会引发错误,指出这些字段未在架构中定义。
如果我使用这个:
const bname = 'business-name'
const add1 = 'address-line-1'
const businessDetailsSchema = {
[bname]: Joi.string().required(),
[add1]: Joi.string().required(),
// etc...
}
然后它工作正常 - 所以从导入的枚举中读取值似乎是一个问题。 谢谢
【问题讨论】: