javascript - 当我已经得到错误时,如何防止下一个检查功能?
问题描述
我使用 yup 针对架构验证我的输入。
是name
空数组。应该在 min 函数中失败。但无论如何它继续测试功能。
如何防止这种情况?如果它失败了,min
它不应该继续下一个功能。
可以吗?
需要明确的是:这个名字是[]
所以它在min
功能上失败了。为什么还要继续检查test
功能?
import * as yup from "yup";
console.clear();
let schema = yup.object().shape({
name: yup.array().min(1).test('x', 'y', (v) => {
console.log({ v });
return true;
})
});
// check validity
schema
.validate({
name: []
}, { abortEarly: true })
.then((valid) => {
console.log({ valid });
})
.catch((e) => {
console.log({ e });
});
解决方案
根据这个问题,这似乎是不可能的:
测试是并行运行的,因此没有“先前的检查”,因为它们都在同一时间发生在一个模式中。
您可以通过abortEarly
选项控制要在 ValidationError 中收集多少错误:是所有错误 ( abortEarly: false
) 还是仅第一个 ( abortEarly: true
)。但这不会阻止您运行所有验证功能。
推荐阅读
- grafana - 如何轮询 Grafana 中 Cypress 测试生成的灯塔报告?
- reactjs - 使用 WPGraphQL 和 Next.JS 获取数据的 CORS 问题
- python - Google colab 错误:如何修复“没有这样的文件目录”的错误?
- python - 使用 FastAPI 的异步 SqlAlchemy:获取所有请求的单个会话
- javascript - 为什么客户端在 IIS 10 中运行的本地主机站点上看到过期的 JS?
- python - 如何将不在允许值列表中的所有像素设置为白色?
- eclipse - com.sun.xml.bind:jaxb-core:jar:2.2.11 的 POM 无效,传递依赖项(如果有)将不可用
- javascript - 灯箱隐形控件
- mysql - MySQL 试图在 WITH 语句期间使用当前模式
- google-sheets - Google 表格中 =IMPORTXML 的公式解析错误