【问题标题】:Yup validation convert empty string to default value是的验证将空字符串转换为默认值
【发布时间】:2021-09-09 04:08:01
【问题描述】:

在我的 Yup 模式中,我是我的字符串字段 name,允许您传入任何字符串、空字符串或什么都不传递。如果你传入一个字符串,它就会通过。如果你传入一个空字符串或什么都不传入,我想转换为默认值。

这是我认为会涵盖它的架构:

const mySchema = yup.object().shape({
  name: yup.string('Name must be a string').max(100, 'Name has a max of 100 characters').default('John Doe')
});

但是,如果我传入一个空字符串'',它不会触发默认转换,它只是作为一个空字符串传递。我试过添加required(),但如果我传递一个空字符串,那只会使线路失败。我试过 nullable()trim() 但似乎没有任何效果。

如何让默认值替换空字符串?

【问题讨论】:

  • 我认为您需要在转换中处理这种情况,因为空字符串 ('') 是一个字符串,不会触发默认值。

标签: node.js yup


【解决方案1】:

我最终添加了一个简单的方法来将空字符串转换为 undefined,这将在默认情况下被拾取:

// Add method
yup.addMethod(yup.string, 'stripEmptyString', function () {
  return this.transform((value) => (value === '' ? undefined : value));
});

// Usage
const mySchema = yup.object().shape({
  name: yup.string('Name must be a string').stripEmptyString().default('John Doe')
});

【讨论】:

    猜你喜欢
    • 2020-10-30
    • 2014-01-29
    • 2012-05-07
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 2012-12-29
    相关资源
    最近更新 更多