我在我的项目中使用“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))
但它们都不起作用。
答案 0 :(得分:4)
答案 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('')