调用Yup Schema的validate()时出现“Required field”错误的原因
问题原因分析
你遇到的问题核心很明确:
- 你调用
userSchema.validate()时没有传入任何待校验的数据,Yup默认会校验一个空对象{}。 - 你的Schema里
firstname、lastname、password都标记为required(),空对象里完全没有这些字段,自然触发必填校验错误——报错里只显示password是因为Yup默认返回首个校验失败的字段,但实际上其他必填项也不符合规则。 - 当你把所有
required()换成optional()后,所有字段都允许缺失,空对象完全符合校验规则,所以错误就消失了。
正确用法
调用validate方法时必须传入待校验的用户数据对象,示例如下:
// 传入符合规则的用户数据进行校验 userSchema.validate({ firstname: 'Gabriel', lastname: 'Smith', password: 'abc123' }) .then(validData => { console.log('校验通过', validData); }) .catch(err => { console.error('校验失败', err.errors); });
内容的提问来源于stack exchange,提问作者Gabriel
相关产品推荐
相关产品推荐

