使用 Node.js 和 PostgreSQL 实现关系型数据库的操作

阅读时长 9 分钟读完

在前端开发中,数据处理是非常关键和基础的部分。而关系型数据库则是常见的数据存储方式。在本文中,我们将使用 Node.js 和 PostgreSQL 实现关系型数据库的操作。

前置准备

在开始之前,我们需要安装 PostgreSQL 数据库和 Node.js 环境。

  1. 安装 PostgreSQL

可以在官网下载安装包,按照提示安装即可。

  1. 安装 Node.js

可以在官网下载安装包,安装完毕后可以使用命令行工具来验证是否安装成功:

如果输出的版本号与官网最新版本不一致,可能需要手动更新一下。

创建数据库

  1. 登录 PostgreSQL

运行以下命令即可打开 PostgreSQL 的 CLI:

其中 -U 选项表示使用的用户,这里我们使用默认的管理员账户 postgres。成功登录后会看到命令行提示符变为类似于 postgres=# 的格式。

  1. 创建数据库

运行以下命令创建我们的测试数据库:

可以通过以下命令来查看已有的数据库:

建立连接

  1. 安装 Node.js PostgreSQL 驱动

我们可以通过 npm 来安装库 pg,它提供了 Node.js 与 PostgreSQL 的交互。运行以下命令即可安装:

  1. 建立连接

在 Node.js 中,我们可以使用以下代码来建立连接:

其中,

  • Poolpg 库中的一个类,用于管理 PostgreSQL 连接池。
  • user 表示连接数据库的用户。
  • host 表示数据库所在的主机名或 IP。
  • database 表示要连接的数据库名称。
  • password 表示连接数据库需要的密码。
  • port 表示连接数据库的端口号。

可以根据实际情况修改这些参数。需要注意的是,默认情况下连接池的大小为 10,也可以手动设置。

建立连接后,我们可以通过以下代码进行一个基本的查询操作:

这里我们查询了当前时间,并通过回调函数打印了查询结果。注意,查询操作完成后需要手动结束连接池。

CRUD 操作

接下来,我们将实现增、删、改、查四种基本的操作,并使用 Promise 封装便于调用和维护。

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

上述代码中,

  • tableName 表示要插入数据的表名。
  • values 表示一个键值对对象,其中键为字段名称,值为要插入的数据。

函数会根据参数生成 SQL 语句并向数据库进行查询操作,最后返回插入数据后的完整记录。可以用以下代码进行测试:

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

上述代码中,

  • tableName 表示要删除数据的表名。
  • where 表示筛选条件,一个键值对对象,其中键为字段名称,值为需要筛选的数据。

函数会根据参数生成 SQL 语句并向数据库进行查询操作,最后返回删除数据后的完整记录。可以用以下代码进行测试:

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

上述代码中,

  • tableName 表示要更新数据的表名。
  • values 表示一个键值对对象,其中键为需要更新的字段名称,值为需要更新的数据。
  • where 表示筛选条件,一个键值对对象,其中键为字段名称,值为需要筛选的数据。

函数会根据参数生成 SQL 语句并向数据库进行查询操作,最后返回更新数据后的完整记录。可以用以下代码进行测试:

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

上述代码中,

  • tableName 表示要查询的表名。
  • fields 表示需要查询的字段数组,如 ['id', 'name']
  • where 表示筛选条件,一个键值对对象,其中键为字段名称,值为需要筛选的数据,默认为空对象。
  • orderBy 表示排序字段,如 'age DESC' 表示按照年龄降序排列,默认为空字符串。
  • limit 表示限制返回结果的数量,如 5 表示只返回前五条数据,不做限制则使用 -1

函数会根据参数生成 SQL 语句并向数据库进行查询操作,最后返回查询结果数组。可以用以下代码进行测试:

总结

通过本文的学习,我们已经掌握了使用 Node.js 和 PostgreSQL 实现关系型数据库的操作。在实际开发中,可以根据需要灵活运用这些基本的 CRUD 操作来完成数据的增删改查。

完整示例代码请见这里

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648fb20348841e9894ddaa6a

纠错
反馈