JOI:允许数组中的空值

时间:2017-01-04 17:53:13

标签: javascript node.js hapijs joi

我正在尝试在POST请求中添加数组验证

Joi.array().items(Joi.string()).single().optional()

我需要在有效负载中允许空值。你能告诉我这是怎么做到的吗?

3 个答案:

答案 0 :(得分:5)

如果要允许数组为null,请使用:

Joi.array().items(Joi.string()).allow(null);

如果要在数组中允许null或空格字符串,请使用:

Joi.array().items(Joi.string().allow(null).allow(''));

示例:

const Joi = require('joi');

var schema = Joi.array().items(Joi.string()).allow(null);

var arr = null;

var result = Joi.validate(arr, schema); 

console.log(result); // {error: null}

arr = ['1', '2'];

result = Joi.validate(arr, schema);

console.log(result); // {error: null}


var insideSchema = Joi.array().items(Joi.string().allow(null).allow(''));

var insideResult = Joi.validate(['1', null, '2'], insideSchema);

console.log(insideResult);

答案 1 :(得分:1)

非常简短的答案是:

name: Joi.string().allow(null)

答案 2 :(得分:0)

我知道我发布的不是您想要的东西, 但是当我遇到类似问题时,这篇文章是

所以我的问题是:我不想在我的对象中允许空数组

我的解决方案:

//如果有数字数组

键:joi.array()。items(joi.number()。required())。strict()。required()

//如果您有字符串数组

键:joi.array()。items(joi.string()。required())。strict()。required()