使用 Fastify 和 PostgreSQL 管理数据

前言

在开发前端应用程序时,处理数据是不可避免的。因此,我们需要一些工具来管理和操作数据。在本文中,我们将介绍如何使用 Fastify 和 PostgreSQL 来管理数据。

Fastify 是一个快速的 Web 框架,它的设计旨在最大限度地提高性能。PostgreSQL 是一个强大的关系型数据库,它的开放源代码和出色的性能使它成为开发人员的首选之一。

安装依赖

在开始之前,您需要安装一些依赖项。

  • Fastify
  • Fastify Postgres
  • PostgreSQL

在终端中运行以下命令:

--- ------- ------- ---------------- --

配置 PostgreSQL

在我们开始应用程序之前,我们需要配置 PostgreSQL 数据库。

创建数据库

打开 PostgreSQL 命令行界面并键入以下命令:

------ -------- -----

创建表

现在我们需要创建一个表。我们将创建一个 users 表作为示例。在命令行界面中输入以下内容:

------ ----- ----- -
    -- ------ ------- ----
    ---- ------- --- -----
    ----- ------- --- ---- -------
    -------- ------- --- ----
--

添加数据

为了演示目的,我们将向用户表添加一些示例数据。在命令行界面输入以下内容:

------ ---- ----- ------ ------ --------- ------ ------ ----- ---------------------- ------------
------ ---- ----- ------ ------ --------- ------ ------ ----- ---------------------- ------------

创建 Fastify 应用程序

现在我们已经配置了 PostgreSQL 数据库,我们将创建一个 Fastify 应用程序。

首先,在项目的根目录中创建一个 server.js 文件。在文件中导入 Fastify 和 Fastify PostgreSQL:

----- ------- - ---------------------
----- --------------- - ----------------------------

接下来,连接到 PostgreSQL 数据库:

--------------------------------- -
  ----------------- --------------------------------------------------
--

请注意,您需要将连接字符串替换为您自己的值。将 localhost 替换为您的数据库主机名,mydb 替换为您创建的数据库名称,username 和 password 替换为您的数据库登录凭据。

现在我们已经连接到数据库,让我们创建一个路由来获取用户列表:

---------------- ----- --------- ------ -- -
  ----- ------ - ----- ---------------------
  ----- ------ - ----- -------------------- - ---- --------
  -----------------

  ------ ------------
---

该路由使用 pg.connect() 方法连接到数据库,然后使用 client.query() 方法执行 SQL 查询。最后,它将结果作为 JSON 对象发送回客户端。

在所有的资源使用完毕后,修改后将它们还回连接池,使用 client.release() 方法即可。

现在我们已经创建了一个 Fastify 应用程序,并且可以从数据库检索数据。

查询特定用户

接下来,我们将创建一个路由以获取特定用户的详细信息。在 server.js 文件中增加以下内容:

------------------- ----- --------- ------ -- -
  ----- ------ - ----- ---------------------
  ----- ------ - ----- -------------------- - ---- ----- ----- -- - ---- ---------------------
  -----------------

  -- ------------------- --- -- -
    ----- --- ----------- ---- -- -------------------- --- --------
  -

  ------ ---------------
---

这个路由接受一个 id 参数,该参数用于查询特定用户的详细信息。我们使用占位符 $1 表示查询。然后我们将请求参数用数组的形式提供到 client.query() 函数中,这样 PostgreSQL 可以避免 SQL 注入攻击。

如果查询结果为空,该路由将抛出一个错误,告诉客户端查询不到用户。

创建新用户

现在让我们创建一个路由来创建新的用户。

----------------- ----- --------- ------ -- -
  ----- - ----- ------ -------- - - -------------

  ----- ------ - ----- ---------------------
  ----- ------ - ----- -------------------- ---- ----- ------ ------ --------- ------ ---- --- --- --------- --- ------ ------ -----------
  -----------------

  ------ ---------------
---

该路由接受一个包含 name、email 和 password 属性的请求体。它使用 client.query() 方法将用户数据插入到 users 表中。

RETURNING * 语句返回新插入的行。我们可以使用 result.rows[0] 获取插入的用户数据。

更新用户

接下来,我们将创建一个路由,以更新现有用户的详细信息。

------------------- ----- --------- ------ -- -
  ----- - ----- ------ -------- - - -------------

  ----- ------ - ----- ---------------------
  ----- ------ - ----- -------------------- ----- --- ---- - --- ----- - --- -------- - -- ----- -- - -- --------- --- ------ ------ --------- --------------------
  -----------------

  -- ------------------- --- -- -
    ----- --- ----------- ---- -- -------------------- --- --------
  -

  ------ ---------------
---

该路由接受一个 id 参数和一个包含 name、email 和 password 属性的请求体。它使用 client.query() 方法将更新后的用户数据更新到 users 表中。

RETURNING * 语句返回更新后的行。我们可以使用 result.rows[0] 获取更新后的用户数据。

如果查询结果为空,该路由将抛出一个错误,告诉客户端查询不到用户。

删除用户

最后,我们将创建一个路由以删除特定用户。

---------------------- ----- --------- ------ -- -
  ----- ------ - ----- ---------------------
  ----- ------ - ----- -------------------- ---- ----- ----- -- - -- --------- --- ---------------------
  -----------------

  -- ------------------- --- -- -
    ----- --- ----------- ---- -- -------------------- --- --------
  -

  ------ ---------------
---

该路由接受一个 id 参数,该参数用于查询特定用户的详细信息并从数据库删除。

RETURNING * 语句返回删除的行。我们可以使用 result.rows[0] 获取删除的用户数据。

如果查询结果为空,该路由将抛出一个错误,告诉客户端查询不到用户。

运行应用程序

现在我们已经完成了 Fastify 应用程序的开发,让我们运行应用程序并检查它是否工作。

首先,在终端中键入以下命令以启动服务器:

---- ---------

然后,在浏览器中输入以下 URL,您应该会看到所有用户的列表:

----------------------

接下来,在浏览器中输入以下 URL,您将获得指定用户的详细信息。请注意,您需要使用实际的 id 替换 {id}:

--------------------------

现在,您可以使用 POSTman 或 cURL 发送 POST、PUT 和 DELETE 请求以创建、更新和删除用户。

结论

在本文中,我们介绍了如何使用 Fastify 和 PostgreSQL 来管理数据。我们学习了如何连接到数据库,查询数据,添加数据,更新数据和删除数据。我们建立了一个完整的 API,使我们能够管理我们的数据。

如果您想深入了解 Fastify 和 PostgreSQL,请查阅官方文档。这里只是一个简单的示例,而实际上您将需要学习更多知识才能开发更完整的应用程序。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66ff52c9d7413cc7552ab665