【问题标题】:Allow string to be null or empty in joi and express-validation在 joi 和 express-validation 中允许字符串为空或空
【发布时间】:2017-07-11 06:51:41
【问题描述】:

我在我的项目中使用 "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))

但它们都不起作用。

【问题讨论】:

    标签: node.js validation joi


    【解决方案1】:

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

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

    Joi documentation on allow(value)

    【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

      【解决方案3】:

      Joi.string().allow('').allow(null) 应该可以工作。我在本地测试过,效果很好。

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          如果你只是指定它为

          dataId: Joi.string()
          

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

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

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

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

              猜你喜欢
              • 2019-06-01
              • 2022-11-12
              • 1970-01-01
              • 2018-01-12
              • 2015-10-04
              • 1970-01-01
              • 2014-06-21
              • 2022-09-28
              • 2019-08-08
              相关资源
              最近更新 更多