跳至主要内容

如何在 Deno 中使用 MySQL2

MySQL2022 年 Stack Overflow 开发者调查 中最受欢迎的数据库,其用户包括 Facebook、Twitter、YouTube 和 Netflix。

查看源代码。

您可以使用 `mysql2` 节点包和通过 `npm:mysql2` 导入来操作和查询 MySQL 数据库。这使我们能够使用它的 Promise 包装器并利用顶层 await。

import mysql from "npm:mysql2@^2.3.3/promise";

连接到 MySQL

我们可以使用 `createConnection()` 方法连接到我们的 MySQL 服务器。您需要主机(如果您正在测试,则为 `localhost`,或者在生产环境中更有可能是云数据库端点)以及用户和密码。

const connection = await mysql.createConnection({
host: "localhost",
user: "root",
password: "password",
});

您也可以选择在连接创建期间指定数据库。在这里,我们将使用 `mysql2` 来动态创建数据库。

创建和填充数据库

现在您已经运行了连接,您可以使用 `connection.query()` 以及 SQL 命令来创建数据库和表,以及插入初始数据。

首先,我们想生成并选择要使用的数据库。

await connection.query("CREATE DATABASE denos");
await connection.query("use denos");

然后,我们想创建表。

await connection.query(
"CREATE TABLE `dinosaurs` ( `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` varchar(255) NOT NULL, `description` varchar(255) )",
);

表创建后,我们可以填充数据。

await connection.query(
"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.')",
);

现在我们已经准备好所有数据,可以开始查询了。

查询 MySQL

我们可以使用相同的 `connection.query()` 方法来编写我们的查询。首先,我们尝试获取 `dinosaurs` 表中的所有数据。

const results = await connection.query("SELECT * FROM `dinosaurs`");
console.log(results);

此查询的结果是我们数据库中的所有数据。

[
[
{
id: 1,
name: "Aardonyx",
description: "An early stage in the evolution of sauropods."
},
{
id: 2,
name: "Abelisaurus",
description: `Abel's lizard" has been reconstructed from a single skull.`
},
{ id: 3, name: "Deno", description: "The fastest dinosaur that ever lived." }
],

如果我们只想从数据库中获取单个元素,我们可以更改我们的查询。

const [results, fields] = await connection.query(
"SELECT * FROM `dinosaurs` WHERE `name` = 'Deno'",
);
console.log(results);

这将给我们一个单行结果。

[{ id: 3, name: "Deno", description: "The fastest dinosaur that ever lived." }];

最后,我们可以关闭连接。

await connection.end();

有关 `mysql2` 的更多信息,请查看他们的文档 这里