跳转到内容

Xata & Astro

Xata 是一个无服务器数据平台,它通过提供统一的 REST API,集成了关系型数据库、搜索引擎和分析引擎的功能。

  • 一个拥有已创建数据库的 Xata 账户。(你可以使用 Web UI 中的示例数据库。)
  • 一个访问令牌(XATA_API_KEY)。
  • 你的数据库 URL。

更新并初始化 Xata CLI 后,你的 API 令牌将位于 .env 文件中,并且数据库 URL 也已定义。

完成设置后,你应该拥有

.env
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 branch
XATA_BRANCH=main

以及已定义的 databaseURL

.xatarc
{
"databaseUrl": "https://your-database-url"
}

为了给你的环境变量提供智能提示(IntelliSense)和类型安全,请在你的 src/ 目录中编辑或创建 env.d.ts 文件

src/env.d.ts
interface ImportMetaEnv {
readonly XATA_API_KEY: string;
readonly XATA_BRANCH?: string;
}
interface ImportMeta {
readonly env: ImportMetaEnv;
}

使用 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 篇文章。

src/pages/blog/index.astro
---
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 创建的生成文件,因为一旦模式更新,你的更改将被覆盖。

更多后端服务指南

贡献 社区 赞助