常见问题排查指南
用途: 快速解决 schema-dsl 使用中的常见问题
更新: 2025-12-26
📑 目录
验证问题
问题1: 验证总是失败,但不知道原因
症状:
排查步骤:
- 检查 errors 数组
- 启用详细错误信息
- 使用 Schema 摘要工具
- 检查字段名是否正确
问题2: 自定义验证器不工作
症状:
可能原因及解决方案:
原因1: 异步验证器在同步模式下不执行
原因2: custom() 返回值不正确
问题3: 嵌套对象验证失败
症状:
解决方案:
问题4: 数组验证不符合预期
症状:
检查语法:
性能问题
问题5: 验证速度慢
症状: 验证大量数据时性能差
排查清单:
1. 检查是否使用了缓存
2. 使用 compile() 预编译
3. 避免过于复杂的正则表达式
4. 批量验证优化
问题6: 内存占用过高
原因: 未清理缓存
解决方案:
多语言问题
问题7: 错误消息未翻译
症状: 显示英文错误消息,期望显示中文
排查步骤:
1. 检查语言包是否加载
2. 检查验证调用是否传入 locale
3. 动态切换语言
问题8: 自定义错误消息未生效
症状: 设置了 messages() 但没有显示
检查错误关键字:
常用错误关键字:
required- 必填字段为空min/max- 长度约束(推荐)minLength/maxLength- 长度约束(兼容)pattern- 正则验证失败format- 格式验证失败(email、url等)enum- 枚举值不匹配
导出器问题
问题9: 导出的 DDL 无法执行
症状: MySQL/PostgreSQL DDL 语句执行报错
常见问题:
1. 字段名包含保留关键字
2. 数据类型不支持
问题10: MongoDB 验证规则不生效
症状: 集合创建成功,但不验证数据
检查步骤:
1. 确认使用了 validator
2. 检查 validationLevel
String扩展问题
问题11: String 扩展方法未定义
症状:
原因: String 扩展未安装
解决方案:
调试技巧
技巧1: 查看生成的 JSON Schema
技巧2: 使用 Schema 摘要工具
技巧3: 启用详细日志
技巧4: 单元测试验证
获取帮助
如果以上方法无法解决你的问题:
- 查看文档: 完整文档索引
- 查看示例: troubleshooting.ts
- GitHub Issues: 提交问题
- 常见问题: FAQ.md
对应示例文件
示例入口: troubleshooting.ts
说明: 演示如何用 validate() 和 compile() 复现错误、查看路径/关键字/消息,并快速定位失败原因。
贡献
发现了新的常见问题?欢迎提交 PR 补充本文档!