在前端开发中,数据处理是非常关键和基础的部分。而关系型数据库则是常见的数据存储方式。在本文中,我们将使用 Node.js 和 PostgreSQL 实现关系型数据库的操作。
前置准备
在开始之前,我们需要安装 PostgreSQL 数据库和 Node.js 环境。
- 安装 PostgreSQL
可以在官网下载安装包,按照提示安装即可。
- 安装 Node.js
可以在官网下载安装包,安装完毕后可以使用命令行工具来验证是否安装成功:
node -v npm -v
如果输出的版本号与官网最新版本不一致,可能需要手动更新一下。
创建数据库
- 登录 PostgreSQL
运行以下命令即可打开 PostgreSQL 的 CLI:
psql -U postgres
其中 -U
选项表示使用的用户,这里我们使用默认的管理员账户 postgres
。成功登录后会看到命令行提示符变为类似于 postgres=#
的格式。
- 创建数据库
运行以下命令创建我们的测试数据库:
CREATE DATABASE mydatabase;
可以通过以下命令来查看已有的数据库:
\l
建立连接
- 安装 Node.js PostgreSQL 驱动
我们可以通过 npm 来安装库 pg
,它提供了 Node.js 与 PostgreSQL 的交互。运行以下命令即可安装:
npm install pg
- 建立连接
在 Node.js 中,我们可以使用以下代码来建立连接:
const { Pool } = require('pg'); const pool = new Pool({ user: 'postgres', host: 'localhost', database: 'mydatabase', password: 'yourPassword', port: 5432, });
其中,
Pool
是pg
库中的一个类,用于管理 PostgreSQL 连接池。user
表示连接数据库的用户。host
表示数据库所在的主机名或 IP。database
表示要连接的数据库名称。password
表示连接数据库需要的密码。port
表示连接数据库的端口号。
可以根据实际情况修改这些参数。需要注意的是,默认情况下连接池的大小为 10,也可以手动设置。
建立连接后,我们可以通过以下代码进行一个基本的查询操作:
pool.query('SELECT NOW()', (err, res) => { console.log(err, res); pool.end(); // 结束连接池 });
这里我们查询了当前时间,并通过回调函数打印了查询结果。注意,查询操作完成后需要手动结束连接池。
CRUD 操作
接下来,我们将实现增、删、改、查四种基本的操作,并使用 Promise 封装便于调用和维护。
增
-- -------------------- ---- ------- -------- ----------------- ------- - ------ --- ----------------- ------- -- - ----- ------ - ------------------------------ ----- ------------ - --------------------------------- -- -- --------------------- ----- ----- - ------- ---- ------------ ----------- ------ ----------------- --------- --- ----------------- ---------------------- ----- ---- -- - -- ----- ------------ ---- --------------------- --- --- -
上述代码中,
tableName
表示要插入数据的表名。values
表示一个键值对对象,其中键为字段名称,值为要插入的数据。
函数会根据参数生成 SQL 语句并向数据库进行查询操作,最后返回插入数据后的完整记录。可以用以下代码进行测试:
insert('users', {name: 'Alice', age: 28}) .then(console.log) .catch(console.error);
删
-- -------------------- ---- ------- -------- ----------------- ------ - ------ --- ----------------- ------- -- - ----- ------------ - ---------------------- ----- ----------- - ------------------------- ------- -- -- --------- - ---------------- --- --- ----- ----- - ------- ---- ------------ ----- -------------- --------- --- ----------------- --------------------- ------- -- ------- ----- ---- -- - -- ----- ------------ ---- --------------------- --- --- -
上述代码中,
tableName
表示要删除数据的表名。where
表示筛选条件,一个键值对对象,其中键为字段名称,值为需要筛选的数据。
函数会根据参数生成 SQL 语句并向数据库进行查询操作,最后返回删除数据后的完整记录。可以用以下代码进行测试:
remove('users', {name: 'Alice'}) .then(console.log) .catch(console.error);
改
-- -------------------- ---- ------- -------- ----------------- ------- ------ - ------ --- ----------------- ------- -- - ----- --------- - ----------------------------------- ------- -- -- --------- - -------------------- ----- ------------ - ---------------------- ----- ----------- - ------------------------- ------- -- -- --------- - ------------------------------------------- --- --- ----- ----- - ------- ------------ --- ------------ ----- -------------- --------- --- ----------------- -------------------------- ------------------------ ------- -- -------- ----- ---- -- - -- ----- ------------ ---- --------------------- --- --- -
上述代码中,
tableName
表示要更新数据的表名。values
表示一个键值对对象,其中键为需要更新的字段名称,值为需要更新的数据。where
表示筛选条件,一个键值对对象,其中键为字段名称,值为需要筛选的数据。
函数会根据参数生成 SQL 语句并向数据库进行查询操作,最后返回更新数据后的完整记录。可以用以下代码进行测试:
update('users', { age: 29 }, { name: 'Alice' }) .then(console.log) .catch(console.error);
查
-- -------------------- ---- ------- -------- ----------------- ------- --------- ----------- --------- - ------ --- ----------------- ------- -- - ----- --------- - ----------------- ----- ------------ - ---------------------- ----- ----------- - ------------------------- ------- -- -- --------- - ---------------- --- --- ----- ----------- - ------- - ------ -- ----------- - --- ----- ----------- - ----- --- -- - -- - ------ ---------- ----- ----- - ------- ------------ ---- ------------ ----- -------------- -------------- ---------------- ----------------- --------------------- ------- -- ------- ----- ---- -- - -- ----- ------------ ---- ------------------ --- --- -
上述代码中,
tableName
表示要查询的表名。fields
表示需要查询的字段数组,如['id', 'name']
。where
表示筛选条件,一个键值对对象,其中键为字段名称,值为需要筛选的数据,默认为空对象。orderBy
表示排序字段,如'age DESC'
表示按照年龄降序排列,默认为空字符串。limit
表示限制返回结果的数量,如5
表示只返回前五条数据,不做限制则使用-1
。
函数会根据参数生成 SQL 语句并向数据库进行查询操作,最后返回查询结果数组。可以用以下代码进行测试:
select('users', ['id', 'name', 'age'], { age: 29 }, 'name ASC', 2) .then(console.log) .catch(console.error);
总结
通过本文的学习,我们已经掌握了使用 Node.js 和 PostgreSQL 实现关系型数据库的操作。在实际开发中,可以根据需要灵活运用这些基本的 CRUD 操作来完成数据的增删改查。
完整示例代码请见这里。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648fb20348841e9894ddaa6a