← Cloudflare Workers / workers / databases / third-party-integrations
Turso
Turso ↗ je distribuovaná databáze hostovaná na edge, založená na libSQL ↗, open source fork SQLite. Turso bylo navrženo tak, aby minimalizovalo latenci dotazů u aplikací, jejichž dotazy přicházejí odkudkoli na světě.
Nastavit integraci s Turso
Chcete-li nastavit integraci se službou Turso:
-
Pro vytvoření a naplnění databáze potřebujete nainstalovat Turso CLI. Pro instalaci Turso CLI použijte v terminálu jeden z následujících dvou příkazů:
# On macOS and linux with homebrew brew install tursodatabase/tap/turso # Manual scripted installation curl -sSfL https://get.tur.so/install.sh | bashDále spusťte následující příkaz, abyste se ujistili, že je Turso CLI nainstalováno:
turso --version -
Než vytvoříte svou první databázi Turso, musíte se ověřit pomocí svého účtu GitHub spuštěním:
turso auth loginWaiting for authentication... ✔ Success! Logged in as <YOUR_GITHUB_USERNAME>Po přihlášení můžete vytvořit databázi pomocí příkazu
turso db create <DATABASE_NAME>. Turso vytvoří databázi a automaticky zvolí lokalitu, která je vám nejblíže.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.Jakmile máte první databázi vytvořenou, můžete se k ní přímo připojit a spouštět proti ní SQL dotazy.
turso db shell my-db -
Zkopírujte následující SQL dotaz do shellu, který jste právě otevřeli:
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'); -
Nakonfigurujte přihlašovací údaje databáze Turso ve svém Workeru:
Do Workeru musíte jako secrets přidat URL adresu databáze Turso a autentizační token. Nejprve získejte URL adresu databáze a vytvořte autentizační token:
# Get your database URL turso db show my-db --url # Create an authentication token turso db tokens create my-dbPoté je přidejte jako tajné hodnoty do vašeho Workeru pomocí Wrangler:
# 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 -
Ve svém Workeru nainstalujte klientskou knihovnu Turso:
npm i @libsql/client -
Následující příklad ukazuje, jak ve Workeru odeslat dotaz do databáze Turso. Přihlašovací údaje potřebné pro připojení k Turso byly přidány jako secrets do vašeho Workeru.
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 }); }- Import klientské knihovny libSQL
@libsql/client/webmusí být importováno přesně tak, jak je uvedeno, při práci s Cloudflare Workers. Import mimo web nebude v prostředí Workers fungovat. -
Envrozhraní obsahuje proměnná prostředí a secret definováno, když jste v kroku 4 přidali integraci Turso. -
Envrozhraní také ukládá do mezipaměti objekt klienta libSQL a router, který byl vytvořen při prvním požadavku na Worker. - Worker používá
buildLibsqlClientpro dotazování naelementsdatabáze a vrátí odpověď jako objekt JSON.
- Import klientské knihovny libSQL
Jakmile máte nastavené prostředí a připravený kód, můžete Worker před nasazením otestovat lokálně.
Další informace o Turso naleznete v Oficiální dokumentace Turso ↗.