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

uhry853o  于 2023-05-22  发布在  Node.js
关注(0)|答案(6)|浏览(186)

我用的是“joi”:“10.0.6”和“express-validation”:“1.0.1”在我的项目中验证一个JSON对象,我将保存在数据库中。其中一个字段是字符串,但它可以为null或空。如果字符串为空或null,如何允许字符串通过验证?
我已经试过这些案例:

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

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

但这两个都不管用

yzxexxkh

yzxexxkh1#

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

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

请参阅Joi文档allow(value)

h4cxqtbf

h4cxqtbf2#

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

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

允许空字符串通过,对于多个字符串验证,也可以这样做

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

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

mdfafbf1

mdfafbf13#

如果你想允许空字符串 * 并将其视为undefined*(即将其转换为undefined),那么使用Joi的empty方法:

data: Joi.string().empty('')
ntjbwcob

ntjbwcob4#

Joi.string().allow('').allow(null)应该已经工作了。我在本地测试过,效果很好。
显示您的测试用例和错误?

7nbnzgx9

7nbnzgx95#

如果你只是把它指定为

dataId: Joi.string()

默认情况下,它应该是可选。
答:目前还不能自己尝试。这里的替代方案,如果以上不工作:

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

c3frrgcw6#

如果只需要null或空字符串,请使用以下命令:

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

相关问题