如何將 Planetscale 與 Deno 搭配使用
Planetscale 是一個相容於 MySQL 的無伺服器資料庫,其設計採用開發人員工作流程,讓開發人員能夠從命令列建立、分歧和部署資料庫。
我們將使用 Planetscale 無伺服器驅動程式 @planetscale/database
,以使用 Deno。首先,我們想要建立 main.ts
並從此套件匯入連線方法
import { connect } from "npm:@planetscale/database@^1.4";
設定我們的連線
連線需要三個憑證:主機、使用者名稱和密碼。這些憑證是資料庫特定的,因此我們首先需要在 Planetscale 中建立一個資料庫。您可以按照 此處 的初始說明進行操作。不用擔心加入架構,我們可以透過 @planetscale/database
進行操作。
建立資料庫後,前往「概觀」,按一下「連線」,然後選擇「使用 @planetscale/database
連線」以取得主機和使用者名稱。然後按一下「密碼」以建立資料庫的新密碼。取得所有三個憑證後,您可以直接插入,或更理想的做法是將它們儲存為環境變數
export HOST=<host>
export USERNAME=<username>
export PASSWORD=<password>
然後使用 Deno.env
呼叫它們
const config = {
host: Deno.env.get("HOST"),
username: Deno.env.get("USERNAME"),
password: Deno.env.get("PASSWORD"),
};
const conn = connect(config);
如果您在儀表板中設定環境變數,這也會在 Deno Deploy 上運作。使用下列指令執行
deno run --allow-net --allow-env main.ts
conn
物件現在是與我們的 Planetscale 資料庫的開放連線。
建立並填充我們的資料庫表格
現在您已執行連線,您可以使用 SQL 指令來 conn.execute()
建立表格並插入初始資料
await conn.execute(
"CREATE TABLE dinosaurs (id int NOT NULL AUTO_INCREMENT PRIMARY KEY, name varchar(255) NOT NULL, description varchar(255) NOT NULL);",
);
await conn.execute(
"INSERT INTO `dinosaurs` (id, name, description) VALUES (1, 'Aardonyx', 'An early stage in the evolution of sauropods.'), (2, 'Abelisaurus', 'Abels lizard has been reconstructed from a single skull.'), (3, 'Deno', 'The fastest dinosaur that ever lived.')",
);
查詢 Planetscale
我們可以使用相同的 conn.execute()
來撰寫我們的查詢。讓我們取得所有恐龍的清單
const results = await conn.execute("SELECT * FROM `dinosaurs`");
console.log(results.rows);
結果
[
{
id: 1,
name: "Aardonyx",
description: "An early stage in the evolution of sauropods.",
},
{
id: 2,
name: "Abelisaurus",
description: "Abels lizard has been reconstructed from a single skull.",
},
{ id: 3, name: "Deno", description: "The fastest dinosaur that ever lived." },
];
我們也可以透過指定恐龍名稱來取得資料庫中的單一列
const result = await conn.execute(
"SELECT * FROM `dinosaurs` WHERE `name` = 'Deno'",
);
console.log(result.rows);
這將提供我們單一列的結果
[{ id: 3, name: "Deno", description: "The fastest dinosaur that ever lived." }];
您可以在他們的 文件 中找到更多關於使用 Planetscale 的資訊。