generate
migrate
push
pull
check
up
studio
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 });