跳转到内容
搜索文档

Turso

最后更新 查看 MarkdownAgent 设置

Turso 是一款基于 libSQL(SQLite 的开源分支)的边缘托管分布式数据库。Turso 专为查询可能来自全球任意位置的应用而设计,以最小化查询延迟。

设置 Turso 集成

要设置 Turso 集成:

  1. 你需要安装 Turso CLI 来创建和填充数据库。在终端中使用以下两条命令之一安装 Turso CLI:

    # On macOS and linux with homebrew
    brew install tursodatabase/tap/turso
    
    # Manual scripted installation
    curl -sSfL https://get.tur.so/install.sh | bash

    接下来,运行以下命令确认 Turso CLI 已安装:

    turso --version
  2. 在创建第一个 Turso 数据库之前,你需要通过运行以下命令使用 GitHub 账户进行身份验证:

    turso auth login
    Waiting for authentication...
      Success! Logged in as <YOUR_GITHUB_USERNAME>

    完成身份验证后,可以使用 turso db create <DATABASE_NAME> 命令创建数据库。Turso 会创建数据库并自动选择离你最近的位置。

    turso db create my-db
    
    # Example:
    Creating database my-db in Amsterdam, Netherlands (ams)
    
    # Once succeeded:
    Created database my-db in Amsterdam, Netherlands (ams) in 13 seconds.

    创建第一个数据库后,你现在可以直接连接并执行 SQL 查询。

    turso db shell my-db
  3. 将以下 SQL 查询复制到你刚打开的 shell 中:

    CREATE TABLE elements (
      id INTEGER NOT NULL,
      elementName TEXT NOT NULL,
      atomicNumber INTEGER NOT NULL,
      symbol TEXT NOT NULL
    );
    
    INSERT INTO elements (id, elementName, atomicNumber, symbol)
    VALUES (1, 'Hydrogen', 1, 'H'),
      (2, 'Helium', 2, 'He'),
      (3, 'Lithium', 3, 'Li'),
      (4, 'Beryllium', 4, 'Be'),
      (5, 'Boron', 5, 'B'),
      (6, 'Carbon', 6, 'C'),
      (7, 'Nitrogen', 7, 'N'),
      (8, 'Oxygen', 8, 'O'),
      (9, 'Fluorine', 9, 'F'),
      (10, 'Neon', 10, 'Ne');
  4. 在 Worker 中配置 Turso 数据库凭据:

    你需要将 Turso 数据库 URL 和身份验证令牌作为 secret 添加到 Worker。首先,获取数据库 URL 并创建身份验证令牌:

    # Get your database URL
    turso db show my-db --url
    
    # Create an authentication token
    turso db tokens create my-db

    然后使用 Wrangler 将这些值添加为 secret:

    # Add the database URL as a secret
    npx wrangler secret put TURSO_URL
    # When prompted, paste your database URL
    
    # Add the authentication token as a secret  
    npx wrangler secret put TURSO_AUTH_TOKEN
    # When prompted, paste your authentication token
  5. 在 Worker 中安装 Turso 客户端库:

    npm i @libsql/client
  6. 以下示例展示如何在 Worker 中查询 Turso 数据库。连接 Turso 所需的凭据已作为 secrets 添加到 Worker。

    import { Client as LibsqlClient, createClient } from "@libsql/client/web";
    
    export interface Env {
    	TURSO_URL?: string;
    	TURSO_AUTH_TOKEN?: string;
    }
    
    export default {
    	async fetch(request, env, ctx): Promise<Response> {
    		const client = buildLibsqlClient(env);
    
    		try {
    			const res = await client.execute("SELECT * FROM elements");
    			return new Response(JSON.stringify(res), {
    				status: 200,
    				headers: { "Content-Type": "application/json" },
    			});
    		} catch (error) {
    			console.error("Error executing SQL query:", error);
    			return new Response(
    				JSON.stringify({ error: "Internal Server Error" }),
    				{
    					status: 500,
    				},
    			);
    		}
    	},
    } satisfies ExportedHandler<Env>;
    
    function buildLibsqlClient(env: Env): LibsqlClient {
    	const url = env.TURSO_URL?.trim();
    	if (url === undefined) {
    		throw new Error("TURSO_URL env var is not defined");
    	}
    
    	const authToken = env.TURSO_AUTH_TOKEN?.trim();
    	if (authToken == undefined) {
    		throw new Error("TURSO_AUTH_TOKEN env var is not defined");
    	}
    
    	return createClient({ url, authToken });
    }
    • 在 Cloudflare Workers 中使用时,libSQL 客户端库 import @libsql/client/web 必须完全按所示方式导入。非 web import 在 Workers 环境中无法工作。
    • Env 接口包含在第 4 步添加 Turso 集成时定义的环境变量secret
    • Env 接口还会缓存 libSQL 客户端对象和 router,它们是在 Worker 的第一次请求时创建的。
    • Worker 使用 buildLibsqlClient 查询 elements 数据库,并将响应作为 JSON 对象返回。

环境配置完成且代码就绪后,你现在可以在部署前本地测试 Worker。

要了解更多关于 Turso 的信息,请参阅 Turso 官方文档

这篇文档对您有帮助吗?