drizzle-zod 是为 Drizzle ORM 开发的插件,它允许您从 Drizzle ORM 模式中生成 Zod 模式。
drizzle-zod
npm i drizzle-zod
yarn add drizzle-zod
pnpm add drizzle-zod
bun add drizzle-zod
import { pgEnum, pgTable, serial, text, timestamp } from 'drizzle-orm/pg-core'; import { createInsertSchema, createSelectSchema } from 'drizzle-zod'; import { z } from 'zod'; const users = pgTable('users', { id: serial('id').primaryKey(), name: text('name').notNull(), email: text('email').notNull(), role: text('role', { enum: ['admin', 'user'] }).notNull(), createdAt: timestamp('created_at').notNull().defaultNow(), }); // 插入用户的模式 - 可用于验证 API 请求 const insertUserSchema = createInsertSchema(users); // 选择用户的模式 - 可用于验证 API 响应 const selectUserSchema = createSelectSchema(users); // 覆盖字段 const insertUserSchema = createInsertSchema(users, { role: z.string(), }); // 精炼字段 - 如果在最终模式中您想改变字段(使其变为可选或可为空)则很有用 const insertUserSchema = createInsertSchema(users, { id: (schema) => schema.id.positive(), email: (schema) => schema.email.email(), role: z.string(), }); // 使用 const user = insertUserSchema.parse({ name: 'John Doe', email: 'johndoe@test.com', role: 'admin', }); // Zod 模式类型也从表模式中推断出来,因此您拥有完整的类型安全性 const requestSchema = insertUserSchema.pick({ name: true, email: true });