16

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

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

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

4

3 回答 3

32

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

Joi.array().items(Joi.string()).allow(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);
于 2017-01-09T21:00:34.420 回答
3

非常简短的回答是:

name: Joi.string().allow(null)
于 2020-07-30T12:15:42.283 回答
2

我知道我发布的内容不是您要找的内容,但是因为我遇到了类似类型的问题。

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

我的解决方案:

// if you have array of numbers

key: joi.array().items(joi.number().required()).strict().required()

// if you have array of strings

key: joi.array().items(joi.string().required()).strict().required()
于 2019-10-19T11:08:54.547 回答