我如何使用 Joi valid 函数并允许小写和大写字母

Reu*_*rag 3 javascript validation node.js joi hapi.js

大家好,感谢您抽出时间。我正在尝试创建一个验证中间件。我正在使用 Joi 验证从请求正文收到的信息。

我只想允许使用以下字符串,例如: ['a','b','c'] 但也允许大写和小写实例。(例如“A”也是有效的);

我试图做什么:

const schema = Joi.object().keys({
   letter: Joi.string().valid('a','b','c').insensitive()
})

schema.validate({letter: 'B'}) //return error but i want it to return 'B'
Run Code Online (Sandbox Code Playgroud)

我还尝试了小写和大写函数与转换的每种组合,但我无法使其工作。我希望例如 {letter: 'A'} 会有效。

有没有办法将有效函数与不敏感函数结合起来,以便大写和小写都被接受?

感谢您的时间。

Ash*_*odi 5

我想它工作得很好。如果您运行以下代码,您将得到{"letter": "b"}

const Joi = require("@hapi/joi");
const schema = Joi.object().keys({
  "letter": Joi.string().valid("a", "b", "c").insensitive()
});

console.log(schema.validate({"letter": "B"}, {"convert": true}));

Run Code Online (Sandbox Code Playgroud)

使用convert false,你会得到大写的B。

您可以在此处看到正在运行的代码 - https://repl.it/repls/HarmfulEvenPhases