按通用curd开发规范开发
检查已有实体类文件 your-entity.entity.ts 检查其关联的实体的 schema文件 创建实体Zod Schema定义文件 your-entity.schema.ts
注意:
为每个验证字段添加 中文错误提示
示例:
// 用户 schema
export const UserSchema = z.object({
username: z.string().min(3, '用户名至少3个字符').max(255, '最多255个字符'),
password: z.string().min(6, '密码至少6位').max(255, '最多255位'),
phone: z.string().regex(/^1[3-9]\d{9}$/, '请输入正确的手机号'),
email: z.email('请输入正确的邮箱格式'),
name: z.string().max(255, '姓名最多255个字符').optional()
});
3. 有关联的实体,其 zod schema 要import 用上
示例:
typescript import { ZichanCategorySchema } from './zichan-category.schema'; export const ZichanInfoSchema = z.object({
id: z.number().int('必须是整数').positive('必须是正整数').openapi({
description: '资产信息ID',
example: 1
}),
category: ZichanCategorySchema.nullable().openapi('设备分类信息'),
});
4. 实体中import用到的枚举,your-entity.schema.ts 中也要import用上
示例:
typescript
// 教室状态枚举
export enum ClassroomStatus {
CLOSED = 0, // 关闭
OPEN = 1 // 开放
}
// 在当前zod v4中 z.enum 代替了 z.nativeEnum;
z.object({
// z.enum(ClassroomStatus) 等价于 z.nativeEnum(ClassroomStatus), 不要 z.enum([ClassroomStatus.CLOSED, ClassroomStatus.OPEN]),应该是 z.enum(ClassroomStatus)
z.enum(ClassroomStatus).nullable().openapi({
description: '状态 (0关闭 1开放)',
example: ClassroomStatus.OPEN
}),
})
5. 在当前 zod v4中, z.coerce.date(), z.coerce.number() 等,都要添加类型泛型指定
示例:
typescript z.coerce.date() z.coerce.number() ```