用 joi 验证字符串数组,必须是字符串

ImI*_*ode 5 arrays node.js joi

我需要验证一个数组以检查它的元素是否是使用 joi 的字符串。它总是发送“Inavlid tag”的错误。

// returned array from req.body
let tags = ["Vue", "React", "Angular"]

// joi shema
const schema = {
     tags: Joi.array().items(Joi.string()),
};

const { error, value } = Joi.validate(tags, schema);

if (error) {
     return res.status(400).send({ tagError: "Invalid tag" });
}
Run Code Online (Sandbox Code Playgroud)

Len*_*eph 6

Joi 最近更改为@hapi/joi(字面意思是 2 周前),因此首先要确保您已正确切换出 NPM 包:npm uninstall joinpm i -s @hapi/joi. 确保require也针对此更改更改您的声明。

要在这个新包中定义您的架构,您将使用:

const schema = Joi.array().items(Joi.string());
Run Code Online (Sandbox Code Playgroud)