我在我的项目中使用“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))
但他们都不行。
Joi.string().allow('').allow(null)
应该有效。我在本地测试,它工作正常。
显示您的测试用例和错误?
这很简单,假设该字段是数据,那么您可以将验证强制为
data: Joi.string().allow('')
允许空字符串传递,对于多个字符串验证,它也可以作为
data: Joi.string().allow('', null)
允许数据字段的空值和空值都通过。
如果你只是指定它
dataId: Joi.string()
它应该是默认的可选项。
编辑:目前无法自己尝试。这里有一个替代方案,如果上面不起作用:
dataId: Joi.string().min(0).allow('').allow(null)