在joi和express-validation中允许字符串为null或为空

时间:2017-02-21 15:02:55

标签: node.js validation joi

我在我的项目中使用“joi”:“10.0.6”和“express-validation”:“1.0.1”来验证我将保存在DB中的JSON对象。 其中一个字段是字符串,但它可以为null或空。 如果它是空的或空的情况下如何允许我的字符串传递验证?

我已经尝试过这些案例:

dataId: Joi.string().allow(null).allow('').optional()

dataId: Joi.alternatives().try(Joi.string(), Joi.allow(null))

但它们都不起作用。

6 个答案:

答案 0 :(得分:4)

您也可以使用逗号分隔列表指定它。

dataId: Joi.string().allow(null, '')

请参阅Joi documentation on allow(value)

答案 1 :(得分:1)

Joi.string().allow('').allow(null)应该有效。我在本地测试,它工作正常。

显示您的测试用例和错误?

答案 2 :(得分:1)

如果您只需要 null 或空字符串,请使用:

 dataId: Joi.string().valid(null, '')

答案 3 :(得分:0)

如果您只是将其指定为

dataId: Joi.string()

默认情况下应该是可选的。

编辑:目前无法自行尝试。这里有一个替代方案,如果上面不起作用:

dataId: Joi.string().min(0).allow('').allow(null)

答案 4 :(得分:0)

这很简单,假设字段是数据,那么您可以将验证强加为

data: Joi.string().allow('')

允许传递空字符串, 对于多字符串验证,也可以按照以下方式完成

data: Joi.string().allow('', null)

允许数据字段传递空值和空值。

答案 5 :(得分:0)

如果您想允许空字符串并将其视为未定义(即,将其转换为未定义),则使用Joi的empty method

data: Joi.string().empty('')
相关问题