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

问题描述 投票:1回答:4

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

我已经尝试过这些案例:

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

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

但他们都不行。

node.js validation joi
4个回答
5
投票

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

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

Joi documentation on allow(value)


2
投票

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

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


2
投票

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

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

允许空字符串传递,对于多个字符串验证,它也可以作为

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

允许数据字段的空值和空值都通过。


0
投票

如果你只是指定它

dataId: Joi.string()

它应该是默认的可选项。

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

dataId: Joi.string().min(0).allow('').allow(null)
© www.soinside.com 2019 - 2024. All rights reserved.