astro-db 是一个针对 Astro 项目的数据库操作技能,主要围绕 Astro DB 的使用展开,适用于需要在 Astro 应用中存储结构化数据(如评论、用户、文章、表单数据)、构建无需外部数据库服务的全栈应用、与 Astro Actions 组合实现类型安全表单处理、部署到 Turso(libSQL 云)以及在本地开发时填充种子数据等场景。
主要能力
该技能覆盖 Astro DB 的核心概念:在 db/config.ts 中使用 defineDb 和 defineTable 定义表结构并导出表;支持的列类型包括 column.text()、column.number()、column.boolean()、column.date()、column.json();通过从 astro:db 导入 db 和表来执行异步且类型安全的 CRUD 操作;使用 db/seed.ts 填充开发数据,并可通过 astro db execute 对远程数据库运行种子脚本;生产环境通过设置 ASTRO_DB_REMOTE_URL 和 ASTRO_DB_APP_TOKEN 环境变量并运行 astro db push 将 schema 同步到 Turso;与 astro:actions 组合,形成 Zod 输入校验、数据库操作、类型化响应的端到端类型安全流程。
使用方式
资料描述了该技能包含一套强制性的代理工作流:在任何实现之前并行启动三个代理,分别用于检查现有 db/config.ts、表和 Actions,通过 Context7/Exa 核对 Astro DB API,以及查询 Astro 6 数据库文档中的列类型与 CRUD 用法;实现完成后运行验证代理。技能还提供了参考文档索引(schema-definition.md、crud-operations.md、seed-data.md、turso-production.md、actions-integration.md)以及模板(db-config.md、crud-example.md)。最佳实践包括:从 config.ts 导出表以便在页面和 Actions 中导入;使用 Actions 处理变更操作并配合 Zod 校验;插入后使用 .returning() 获取返回行;在 CI/CD 中部署前运行 astro db push。
限制与注意事项
资料明确说明 @astrojs/db 已在 npm 上弃用(最后版本 v0.21.3),官方 Astro v7 升级指南将其列在「Removed」项下,升级时需从依赖中移除。推荐替代方案包括 Node 内置的 node:sqlite(Node 适配器)、直接使用 Drizzle、Kysely 或 libSQL/Turso 客户端。技能中记录的 Astro DB 内容属于 Astro 6 的旧版 API,主要用于维护和迁移现有项目;新项目建议不要采用。关于 Turso 免费额度的具体数字(资料提及 500 个数据库)仅作为资料中的说法保留,实际以官方信息为准。