是的,如何验证空对象上的必填字段

Oro*_*dan 4 javascript validation yup

我在验证强制字段时遇到问题,这些字段是(可能)空对象的属性。

这是一个示例架构:

object().shape({
   catalog: {
      brand: string().required()
   }
})
Run Code Online (Sandbox Code Playgroud)

如果我尝试根据此架构验证以下对象,我会收到预期的错误:需要品牌。据我了解,为未定义的对象创建了一个默认值,它模仿了模式中对象的形状。这是我所期望的行为,也是我想要的。

{ catalog: undefined }

// "catalog.brand is a required field"
Run Code Online (Sandbox Code Playgroud)

但就我而言,我没有收到未定义的对象,而是收到 null 的对象。我不知道如何使用空值来管理相同的结果。

{ catalog: null }

// No error on catalog.brand
Run Code Online (Sandbox Code Playgroud)

手动将 null 转换为 undefined 是不可能的,因为我收到 null 是有充分理由的。

这是一个 codeandbox,它重现了我的用例:

https://codesandbox.io/s/yup-playground-tbfcj

我真的很感激对此的帮助,谢谢:)

小智 8

解决方案是同时包含nullable()和required()到形状。

例子

const requiredOption = Yup.object()
  .shape({
    value: Yup.string(),
    label: Yup.string(),
  })
  .nullable()
  .required('This field is required.');
Run Code Online (Sandbox Code Playgroud)