【问题标题】:Joi check if string is in existing array - TypescriptJoi检查字符串是否在现有数组中 - 打字稿
【发布时间】:2021-05-19 06:16:48
【问题描述】:

我正在使用Joi 进行项目服务器端验证。

我有一个从数据库中填充的数组,例如:

let s = ['a','b','c'];

现在我需要检查给定字段的值是否仅在数组s 内。像这样:

Joi.object({
    value:  Joi.string().valid(...s).required()
});

我使用Nodejs - Joi Check if string is in a given list 作为参考,但我不断收到此错误:

TypeError: Joi.string(...).valid 不可迭代(无法读取属性 符号(Symbol.iterator))

但是,当值被硬编码时,它可以完美地工作:

Joi.object({
   value:  Joi.string().valid('a','b','c').required()
});

知道如何解决这个问题吗?

【问题讨论】:

  • 尝试 ``` Joi.object({ value: Joi.string().valid.call(s).required() }); ```
  • 我在构建时收到TypeError: Cannot read property 'allow' of undefined

标签: typescript joi


【解决方案1】:

您需要使用Array() constructor:

const s = new Array("1", "2", "3");

const schema = Joi.object({
    a: Joi.string().valid(...s).required()
})

schema.validate({ a: "1" }) // valid
schema.validate({ a: "555" }) // invalid

如果你想保留你的变量 a ,你可以这样做:

const a = ["1", "2", "3"];
const s = new Array(...a);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-19
    • 2020-07-30
    • 2022-12-05
    相关资源
    最近更新 更多