首页 > 解决方案 > 使用 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" });
}

标签: arraysnode.jsjoi

解决方案


Joi 最近被更改为@hapi/joi(字面意思是 2 周前),所以首先要确保你已经正确地切换了 NPM 包:npm uninstall joi并且npm i -s @hapi/joi. 确保require也针对此更改更改您的陈述。

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

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

推荐阅读