返回介绍

Turso 和 Astro

发布于 2024-06-05 21:19:56 字数 5544 浏览 0 评论 0 收藏 0

Turso 是一个基于 libSQL(一个 SQLite 的分支)的分布式数据库。它针对低查询延迟进行了优化,适用于全球范围内的应用程序。

在 Astro 中初始化 Turso

先决条件

  • 已安装并登录 Turso CLI
  • 一个创建 Schema 的 Turso 数据库
  • 你的数据库 URL
  • 一个访问令牌

配置环境变量

使用以下命令获取你的数据库 URL:

turso db show <database-name> --url

为数据库创建一个认证令牌:

turso db tokens create <database-name>

将上面两个命令的输出添加到项目根目录下的 .env 文件中。如果这个文件不存在,请创建一个。

.env
TURSO_DATABASE_URL=libsql://...
TURSO_AUTH_TOKEN=

安装 LibSQL 客户端

安装 @libsql/client 以将 Turso 连接到 Astro:

  • npm
  • pnpm
  • Yarn
npm install @libsql/client
pnpm add @libsql/client
yarn add @libsql/client

初始化一个新客户端

src 文件夹中创建一个名为 turso.ts 的文件,并调用 createClient,传递 TURSO_DATABASE_URLTURSO_AUTH_TOKEN

src/turso.ts
import { createClient } from "@libsql/client/web";


export const turso = createClient({
  url: import.meta.env.TURSO_DATABASE_URL,
  authToken: import.meta.env.TURSO_AUTH_TOKEN,
});

查询你的数据库

要从数据库中访问信息,请在任何 .astro 组件中导入 turso执行 SQL 查询

以下示例从你的表中获取所有 posts,然后在 <BlogIndex /> 组件中显示标题列表:

src/components/BlogIndex.astro
---
import { turso } from '../turso'


const { rows } = await turso.execute('SELECT * FROM posts')
---


<ul>
  {rows.map((post) => (
    <li>{post.title}</li>
  ))}
</ul>

SQL 占位符

execute() 方法可以传递一个对象来将变量传递给 SQL 语句,例如 slug 或分页。

以下示例从 posts 表中获取 WHEREslug 值从 Astro.params 检索的单个条目,然后显示帖子的标题。

src/pages/index.astro
---
import { turso } from '../turso'


const { slug } = Astro.params


const { rows } = await turso.execute({
  sql: 'SELECT * FROM posts WHERE slug = ?',
  args: [slug!]
})
---


<h1>{rows[0].title}</h1>

Turso 资源

更多后端服务指南

Recipes

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文