首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组的Joi验证

数组的Joi验证
EN

Stack Overflow用户
提问于 2017-03-08 03:20:07
回答 7查看 101.2K关注 0票数 81

尝试验证一个数组在一种情况下有零个或多个字符串,在另一种情况下有零个或多个对象,在Joi文档中苦苦挣扎:(

代码语言:javascript
复制
validate: {
        headers: Joi.object({
                'content-type': "application/vnd.api+json",
                accept: "application/vnd.api+json"
        }).options({ allowUnknown: true }),
        payload : Joi.object().keys({
            data : Joi.object().keys({
                type: Joi.any().allow('BY_TEMPLATE').required(),
                attributes: Joi.object({
                    to : Joi.string().email().required(),
                    templateId : Joi.string().required(),
                    categories : Joi.array().items( //trying to validate here that each element is a string),
                    variables : Joi.array({
                        //also trying to validate here that each element is an Object with one key and value
                    })
                })
            }).required()
        })
    }
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2017-03-08 03:24:37

Joi.array().items()接受对数组元素使用的另一个Joi模式。所以字符串数组很简单:

代码语言:javascript
复制
Joi.array().items(Joi.string())

与对象数组相同;只需将对象模式传递给items()

代码语言:javascript
复制
Joi.array().items(Joi.object({
    // Object schema
}))
票数 209
EN

Stack Overflow用户

发布于 2019-08-30 18:50:22

你可以试试这个:

代码语言:javascript
复制
function(data) {
 const Schema = {
   categories: Joi.array().items(Joi.string()),
   variables: Joi.array().items(Joi.object().keys().min(1))
 }
 return Joi.validate(data, Schema)
}

有关更多详细信息,请查看此存储库:https://github.com/raysk4ever/nodejs

票数 12
EN

Stack Overflow用户

发布于 2020-07-17 14:51:32

如果要验证Joi中的字符串数组:

Joi.array().items(Joi.string().valid("item1", "item2", "item3", "item4"))

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42656549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档