Xata & Astro
Xata 是一个无服务器数据平台,它通过提供统一的 REST API,集成了关系型数据库、搜索引擎和分析引擎的功能。
使用 Xata 添加数据库
标题为“使用 Xata 添加数据库”的部分先决条件
标题为“先决条件”的部分- 一个拥有已创建数据库的 Xata 账户。(你可以使用 Web UI 中的示例数据库。)
- 一个访问令牌(
XATA_API_KEY
)。 - 你的数据库 URL。
更新并初始化 Xata CLI 后,你的 API 令牌将位于 .env
文件中,并且数据库 URL 也已定义。
完成设置后,你应该拥有
XATA_API_KEY=hash_key
# Xata branch that will be used# if there's not a xata branch with# the same name as your git branchXATA_BRANCH=main
以及已定义的 databaseURL
{ "databaseUrl": "https://your-database-url"}
环境配置
标题为“环境配置”的部分为了给你的环境变量提供智能提示(IntelliSense)和类型安全,请在你的 src/
目录中编辑或创建 env.d.ts
文件
interface ImportMetaEnv { readonly XATA_API_KEY: string; readonly XATA_BRANCH?: string;}
interface ImportMeta { readonly env: ImportMetaEnv;}
在 Astro 中阅读更多关于环境变量和 .env
文件的信息。
使用 Xata CLI 的代码生成功能并选择 TypeScript 选项,会为你生成一个 SDK 实例,其类型根据你的数据库模式量身定制。此外,@xata.io/client
已被添加到你的 package.json
中。
你的 Xata 环境变量和数据库 URL 已被 SDK 实例自动获取,因此无需更多设置工作。
现在,你的项目应该具有以下结构
目录src/
- xata.ts
- env.d.ts
- .env
- astro.config.mjs
- package.json
- .xatarc
创建你的查询
标题为“创建你的查询”的部分要查询你的文章,请在 .astro
文件中导入并使用 XataClient
类。下面的示例从 Xata 的示例博客数据库中查询前 50 篇文章。
---import { XataClient } from '../../xata';
const xata = new XataClient({ apiKey: import.meta.env.XATA_API_KEY, branch: import.meta.env.XATA_BRANCH});
const { records } = await xata.db.Posts.getPaginated({ pagination: { size: 50 }})---
<ul> {records.map((post) => ( <li>{post.title}</li> ))}</ul>
需要注意的是,每当你的模式(schema)发生变化时,都需要重新生成 SDK。因此,请避免修改 Xata CLI 创建的生成文件,因为一旦模式更新,你的更改将被覆盖。