用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 joi
和 npm i -s @hapi/joi
.确保也更改您的 require
语句以进行此更改。
要在此新包中定义架构,您将使用:
const schema = Joi.array().items(Joi.string());
我需要使用 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 joi
和 npm i -s @hapi/joi
.确保也更改您的 require
语句以进行此更改。
要在此新包中定义架构,您将使用:
const schema = Joi.array().items(Joi.string());