我正在尝试为网址使用数组值。所以我将此作为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']
答案 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' ] } }