Logo
Section 1 / 5

使用 Deno 连接 Postgres

学习在应用程序中何时使用SQL。

导入

使用 Deno 连接 Postgres

学习在应用程序中何时使用SQL。

SQL数据库和NoSQL数据库各有优缺点。选择其中一种取决于多种因素,这仍然是一个主观决策,因为理论上两者都能完成相同的工作。

Course Image

SQL数据库的优缺点

优点缺点
数据完整性语义:通过实现ACID特性,SQL数据库中的数据具有高度可靠性。数据模型僵化:这是SQL数据库最明显的缺点之一。固定的数据库结构(模式)在模型频繁更新时可能带来问题。
SQL查询:由于SQL查询语言成熟且维护良好,因此非常灵活且优化程度高。SQL查询通常易于编写和维护。水平扩展能力有限:许多SQL数据库不支持简单的水平扩展。根据应用规模和使用情况,这可能会成为问题,但可以通过其他方式解决。
数据优化:得益于SQL数据库的成熟与简洁,其内存占用较低,从而具备出色的性能。

使用场景

SQL数据库的一个常见应用场景是用户管理,因为这类数据库结构严谨,能确保数据的高可用性。数据模型的稳定性通常不是问题,因为用户模型往往变化不大。

当然,我们也可以使用NoSQL数据库来处理此类场景。最终选择哪种数据库,取决于我们认为哪种更适合项目需求。

数据库模式

我们有一个简单的模式,仅包含ID、名字和姓氏三个字段。

要创建数据库,可以使用以下SQL语句:

1CREATE TABLE Users(id SERIAL PRIMARY KEY, firstname varchar(255), lastname varchar(255));

接下来,我们可以添加一些数据:

1INSERT INTO users (firstname, lastname) values ('欧比旺', '克诺比');

数据库模式如下所示:

...
数据库模式

添加依赖项

要在Deno中使用PostgreSQL,我们需要引入另一个依赖项——PostgreSQL Deno驱动程序。虽然有多种驱动可选,但本课程将使用来自denodrivers的版本。

添加依赖项非常简单。假设我们有一个server.ts文件,只需在文件中加入以下导入语句:

1import { Client } from "https://deno.land/x/postgres/mod.ts";

这里我们导入了Client对象,可用于建立PostgreSQL连接。

建立连接

添加导入语句后,我们可以在server.ts文件中建立数据库连接,代码如下:

1const client = new Client({ 2 applicationName: "<APP_NAME>", 3 connection: { 4 attempts: 3, 5 }, 6 database: "<DATABASE>", 7 hostname: "<HOSTNAME>", 8 user: "<USER>", 9 password: "<PASSWORD>", 10 port: "<PORT>", 11 tls: { 12 enforce: false, 13 }, 14});

现在,将占位符替换为实际数据,并使用以下命令运行应用程序:

1deno run --allow-net server.ts

执行查询

现在我们已经创建了客户端,可以建立连接并执行查询。具体步骤如下:

  1. 连接到数据库。
  2. 执行查询并将结果输出到控制台。
  3. 关闭数据库连接。

可以使用以下代码实现:

1// 连接数据库 2await client.connect(); 3 4// 执行查询并打印结果 5const result = await client.queryArray("select id, firstname, lastname from users;"); 6console.log(result.rows); 7 8// 关闭数据库连接 9await client.end();

下面是一个示例,展示了如何成功连接数据库、执行查询并关闭连接。

No configuration found for ID: ff0797f21f8ac8c4881195225010e289dbb929d485b90b838055708adac1f867

说明

  • 第4至10行:我们使用PostgreSQL默认数据库连接到本地PostgreSQL实例。
  • 第13行:我们创建了Users表。
  • 第16行:我们通过SQL语句插入了一些数据。
  • 第19至20行:我们查询Users表中的所有数据,并将其显示在控制台中。

数据库与 Deno

更新我们的模式