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

Validate array of strings with joi, must be strings

我需要使用 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" });
}

问题是由于您如何定义模式,正确的验证方法是:

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

const schema = Joi.array().items(Joi.string());

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

Joi 最近更改为 @hapi/joi(实际上是 2 周前),因此请首先确保您已正确切换 NPM 包:npm uninstall joinpm i -s @hapi/joi .确保也更改您的 require 语句以进行此更改。

要在此新包中定义架构,您将使用:

const schema = Joi.array().items(Joi.string());