Joi for Hapi不会将数组的一个元素转换为数组

时间:2017-02-03 16:33:31

标签: node.js swagger hapijs joi

我正在尝试为网址使用数组值。所以我将此作为Joi验证。

entity: Joi.array().allow(['person','location','organization']).unique().single().default(['person'])

如果我这样做,它可以正常工作

http://something.com/query?entity=person&person=organization

它将entity视为数组,因此当我从request

打印出值时
console.log(request.query.entity) // ['person', 'organization']

但是,如果我这样做

http://something.com/query?entity=person

我将entity作为字符串而不是['person']

console.log(request.query.entity) // 'person'

我想要的是我希望http://something.com/query?entity=person的{​​ur} entity被视为['person']

1 个答案:

答案 0 :(得分:2)

.allow()列出了entity数组的有效值,但是您想要指定数组中项目的类型:

entity: Joi.array().unique().single().items(Joi.string().valid(['person','location','organization'])).default(['person'])

来自repl:

> schema = Joi.object({ entity: Joi.array().unique().single().items(Joi.string().valid(['person','location','organization'])).default(['person'])});
> Joi.validate({entity: 'person' }, schema)
{ error: null, value: { entity: [ 'person' ] } }