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

Javascript 是的,如何验证空对象上的必填字段,javascript,validation,yup,Javascript,Validation,Yup,我对作为(可能)空对象属性的必填字段的验证有一个问题 下面是一个示例模式: object().shape({ catalog: { brand: string().required() } }) 如果我尝试根据这个模式验证以下对象,我会得到预期的错误:brand是必需的。据我所知,为未定义的对象创建了一个默认值,它模仿模式中对象的形状。这是我期望的行为,也是我想要的 { catalog: undefined } // "catalog.brand is a requi

我对作为(可能)空对象属性的必填字段的验证有一个问题

下面是一个示例模式:

object().shape({
   catalog: {
      brand: string().required()
   }
})
如果我尝试根据这个模式验证以下对象,我会得到预期的错误:brand是必需的。据我所知,为未定义的对象创建了一个默认值,它模仿模式中对象的形状。这是我期望的行为,也是我想要的

{ catalog: undefined }

// "catalog.brand is a required field"
但在我的例子中,我接收的对象不是未定义的,而是null。我不知道如何用空值管理相同的结果

{ catalog: null }

// No error on catalog.brand
手动将null转换为undefined是不可能的,因为我收到null有一个很好的理由

下面是一个代码沙盒,它复制了我的用例:


我真的很想在这方面得到一些帮助,谢谢:)

解决方案是将
nullable()
required()
都包含到形状中

范例

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

你找到解决办法了吗?“我现在也在为同样的问题而斗争。”DávidM。我发现解决问题的唯一方法是在我的验证器中将null转换为undefined:/我没有发布它,因为我认为这不是解决问题的好方法,但我目前没有任何其他方法。如下所示:catalog:object().transform(nullToUndefined)。nullToUndefined只是检查我的值是否未定义并返回null,就是这样。我以前在初始值中将null强制转换为未定义,所以您的解决方案更好。还有工作!谢谢你。这是一个精神病患者。:)