using-drizzle-queries by andrelandgraf/fullstackrecipes
npx skills add https://github.com/andrelandgraf/fullstackrecipes --skill using-drizzle-queries使用 Drizzle ORM 编写类型安全的数据库查询。涵盖查询、插入、更新、删除、关系查询以及添加新表。
使用 Drizzle ORM 编写类型安全的数据库查询。涵盖查询、插入、更新、删除、关系查询以及添加新表。
参见:
using-drizzle-queries使用 Drizzle 的查询 API 进行类型安全的数据库操作:
import { db } from "@/lib/db/client";
import { chats } from "@/lib/chat/schema";
import { eq, desc } from "drizzle-orm";
// 查询所有
const allChats = await db.select().from(chats);
// 带筛选条件的查询
const userChats = await db
.select()
.from(chats)
.where(eq(chats.userId, userId))
.orderBy(desc(chats.createdAt));
// 查询单条记录
const chat = await db
.select()
.from(chats)
.where(eq(chats.id, chatId))
.limit(1)
.then((rows) => rows[0]);
import { db } from "@/lib/db/client";
import { chats } from "@/lib/chat/schema";
// 插入单条记录
const [newChat] = await db
.insert(chats)
.values({
userId,
title: "New Chat",
})
.returning();
// 插入多条记录
await db.insert(messages).values([
{ chatId, role: "user", content: "Hello" },
{ chatId, role: "assistant", content: "Hi there!" },
]);
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
import { db } from "@/lib/db/client";
import { chats } from "@/lib/chat/schema";
import { eq } from "drizzle-orm";
await db
.update(chats)
.set({ title: "Updated Title" })
.where(eq(chats.id, chatId));
import { db } from "@/lib/db/client";
import { chats } from "@/lib/chat/schema";
import { eq } from "drizzle-orm";
await db.delete(chats).where(eq(chats.id, chatId));
对于涉及关系的查询,使用查询 API:
import { db } from "@/lib/db/client";
const chatWithMessages = await db.query.chats.findFirst({
where: eq(chats.id, chatId),
with: {
messages: {
orderBy: (messages, { asc }) => [asc(messages.createdAt)],
},
},
});
// src/lib/feature/schema.ts
import { pgTable, text, uuid, timestamp } from "drizzle-orm/pg-core";
export const items = pgTable("items", {
id: uuid("id").primaryKey().defaultRandom(),
name: text("name").notNull(),
createdAt: timestamp("created_at").defaultNow().notNull(),
});
src/lib/db/client.ts 中导入模式:import * as itemSchema from "@/lib/feature/schema";
const schema = {
...authSchema,
...chatSchema,
...itemSchema,
};
bun run db:generate
bun run db:migrate
每周安装次数
83
代码仓库
GitHub 星标数
9
首次出现时间
2026年1月20日
安全审计
安装于
opencode65
claude-code54
gemini-cli53
cursor53
codex52
github-copilot47
Write type-safe database queries with Drizzle ORM. Covers select, insert, update, delete, relational queries, and adding new tables.
Write type-safe database queries with Drizzle ORM. Covers select, insert, update, delete, relational queries, and adding new tables.
See:
using-drizzle-queries in Fullstack RecipesUse Drizzle's query API for type-safe database operations:
import { db } from "@/lib/db/client";
import { chats } from "@/lib/chat/schema";
import { eq, desc } from "drizzle-orm";
// Select all
const allChats = await db.select().from(chats);
// Select with filter
const userChats = await db
.select()
.from(chats)
.where(eq(chats.userId, userId))
.orderBy(desc(chats.createdAt));
// Select single record
const chat = await db
.select()
.from(chats)
.where(eq(chats.id, chatId))
.limit(1)
.then((rows) => rows[0]);
import { db } from "@/lib/db/client";
import { chats } from "@/lib/chat/schema";
// Insert single record
const [newChat] = await db
.insert(chats)
.values({
userId,
title: "New Chat",
})
.returning();
// Insert multiple records
await db.insert(messages).values([
{ chatId, role: "user", content: "Hello" },
{ chatId, role: "assistant", content: "Hi there!" },
]);
import { db } from "@/lib/db/client";
import { chats } from "@/lib/chat/schema";
import { eq } from "drizzle-orm";
await db
.update(chats)
.set({ title: "Updated Title" })
.where(eq(chats.id, chatId));
import { db } from "@/lib/db/client";
import { chats } from "@/lib/chat/schema";
import { eq } from "drizzle-orm";
await db.delete(chats).where(eq(chats.id, chatId));
For queries with relations, use the query API:
import { db } from "@/lib/db/client";
const chatWithMessages = await db.query.chats.findFirst({
where: eq(chats.id, chatId),
with: {
messages: {
orderBy: (messages, { asc }) => [asc(messages.createdAt)],
},
},
});
// src/lib/feature/schema.ts
import { pgTable, text, uuid, timestamp } from "drizzle-orm/pg-core";
export const items = pgTable("items", {
id: uuid("id").primaryKey().defaultRandom(),
name: text("name").notNull(),
createdAt: timestamp("created_at").defaultNow().notNull(),
});
src/lib/db/client.ts:import * as itemSchema from "@/lib/feature/schema";
const schema = {
...authSchema,
...chatSchema,
...itemSchema,
};
bun run db:generate
bun run db:migrate
Weekly Installs
83
Repository
GitHub Stars
9
First Seen
Jan 20, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
opencode65
claude-code54
gemini-cli53
cursor53
codex52
github-copilot47
Supabase 使用指南:安全最佳实践、CLI 命令与 MCP 服务器配置
3,600 周安装
Next.js开发技能:构建现代全栈Web应用指南(App Router/服务器组件/SEO优化)
70 周安装
aixyz 智能体开发框架:基于 Bun 和 Vercel AI SDK 构建可盈利 AI 代理
237 周安装
Telegram Bot 开发指南:Node.js/Python 构建机器人教程(含Webhook、支付、部署)
240 周安装
病毒式钩子生成器:基于心理学模式的社交媒体内容创作工具 | 提升参与度
248 周安装
Kibana Vega 技能:使用 ES|QL 与 Vega 语法创建高度定制化 Kibana 仪表板和数据可视化
248 周安装
产品经理沟通指南:利益相关者状态更新、风险沟通与决策记录模板
238 周安装