Turso

Turso 是基於 libSQL 的邊緣資料庫 - libSQL 是 SQLite 的開放原始碼、開放貢獻分支。

它使您能夠將資料放置在全球超過 35 個地點,靠近您的用戶。

用法

您可以使用以下 Qwik Starter 腳本輕鬆新增 Turso

npm run qwik add turso

此命令將添加使用 Turso 所需的依賴項。

它還會在您的專案資料夾中添加新檔案

  • src/lib/turso.ts

並新增或修改 .env.local 檔案以包含

.env.local
PRIVATE_TURSO_DATABASE_URL=
PRIVATE_TURSO_AUTH_TOKEN=

使用檔案資料庫

對於本地開發和 CI 整合,使用本地資料庫檔案是理想的選擇。

首先,透過執行 sqlite3 --version 來檢查您的機器上是否安裝了 SQLite。如果您獲得的不是版本號(例如 0-14 20:58:05 554764a6e721fab307c63a4f98cd958c8428a5d9d8edfde951858d6fd02daapl),請造訪 此連結以獲取安裝說明

繼續執行以下命令來建立 SQLite 檔案資料庫。

sqlite3 foo.db

建立您的資料庫結構描述。

sqlite> create table todo (id integer not null, task text, done int default 0);

將一些資料植入您的資料表中。

sqlite> insert into todo(id, task) values(1, "Go to the gym");
sqlite> insert into todo(id, task) values(2, "Buy groceries");

退出 shell .quit

然後,將資料庫檔案路徑分配給 .env.local 內的 PRIVATE_TURSO_DATABASE_URL 環境變數。

PRIVATE_TURSO_DATABASE_URL=file:foo.db

注意:使用檔案資料庫時不需要資料庫權杖。

使用 Turso 資料庫

當您想將專案部署到生產環境時,您可以 將 Turso CLI 安裝 到您的機器上,並 建立 Turso 資料庫

使用 Turso CLI 的 db shell 命令向您的資料庫發出查詢。

turso db shell <database-name>

建立您的資料庫結構描述。

  create table todo (id integer not null, task text, done int default 0);

將一些資料植入您的資料表中。

  insert into todo(id, task) values(1, "Go to the gym");
  insert into todo(id, task) values(2, "Buy groceries");

退出 shell .quit

請按照以下說明取得您的 Turso 資料庫憑證,並將其分配給部署環境中的環境變數。

從資料庫網址開始,執行以下命令。

turso db show <database-name> --url

複製產生的 URL 並將其分配給 PRIVATE_TURSO_DATABASE_URL 環境變數。

而對於資料庫驗證權杖,請執行以下命令。

turso db tokens create <database-name>

複製產生的權杖並將其分配給 PRIVATE_TURSO_AUTH_TOKEN 環境變數。

如何在 Qwik 中使用 Turso

在您的路由中匯入 tursoClient 並在 Qwik 的伺服器端 API(公開 RequestEvent 物件,例如 routeLoader$()routeAction$()server$() 和端點處理常式,例如 onGetonPostonRequest)中初始化資料庫客戶端執行個體。

import { tursoClient } from "~/utils/turso";
 
export const useRouteLoader = routeLoader$(
  async (requestEvent: RequestEventBase) => {
    const client = tursoClient(requestEvent);
 
    const items = await client.execute("select * from table");
 
    return {
      items: items.rows,
    };
  }
);

如需更多資訊,請造訪 Turso 文件

貢獻者

感謝所有協助改進此文件的貢獻者!

  • xinnks