Express.js 是一款基于 Node.js 平台的轻量级 Web 应用程序框架,被广泛使用于 Web 应用程序和 API 的开发中。而 PostgreSQL 则是一种开源关系型数据库管理系统,它提供了高度可靠性和完整性的数据存储方案,也是众多企业级应用程序中常见的数据库。
本文介绍如何使用 Express.js 和 PostgreSQL 相结合,通过一个简单的 Node.js 应用程序实现数据库交互功能。我们将通过以下步骤实现此过程:
- 安装和配置 PostgreSQL 数据库
- 设置 Express.js 项目及 PostgreSQL 客户端依赖
- 创建简单的 PostgresSQL 数据库模型
- 在 Express.js 应用程序中使用模型
- 使用模型执行 CRUD 操作
- 将应用程序部署到生产环境中
安装和配置 PostgreSQL 数据库
在开始之前,我们需要安装和配置本地的 PostgreSQL 数据库。可以通过官方网站下载并安装 PostgreSQL,然后设置必要的用户和数据库。
设置 Express.js 项目及 PostgreSQL 客户端依赖
在设置项目之前,需要在本地安装 Node.js,可以通过官网下载对应版本的 Node.js 并安装。
下面我们将使用 Express.js 框架来创建新的项目,同时使用 node-postgres 作为 PostgreSQL 客户端依赖。node-postgres 是 PostgreSQL 协议的 Node.js 实现,它提供了连接、查询和处理操作等功能。此外,它还与 Express.js 紧密集成,可以很容易地为其创建自定义中间件。
现在,打开终端并执行以下命令来创建并导航到新的项目目录中:
----- ------------------ -- ------------------
然后,在项目目录中初始化 npm 包并安装需要的依赖:
--- ---- -- --- ------- ------ ------- --
以上命令将创建一个新的 npm 包,并将 Express.js 和 node-postgres 作为项目依赖进行安装。
创建简单的 PostgresSQL 数据库模型
在本例中,我们将创建一个简单的数据库模型 User,该模型包含以下几个属性:
- id: 用户 ID,自动生成
- name: 用户名字
- email: 用户邮箱
首先,创建一个名为db.js 的文件,并在其中设置连接到 PostgreSQL 数据库的相应代码:
----- - ---- - - -------------- ----- ---- - --- ------ ----- --------------------------- ----- ----------------------- --------- ----------------------- --------- --------------------------- ----- ----------------------- --- -------------- - -----
注意,上面的代码需要替换 <YOUR_DATABASE_*> 字符串为实际的 PostgreSQL 数据库相关信息。
然后,创建一个 models/user.js 文件,并在其中创建 User 模型:
----- -- - ----------------- ----- ---- - ----- ------------ ------ - ----- ----- - ------- ---- ----- ------ ------ ------ ---- --- --------- --- ----- ------ - ------ ------- ----- - ---- - - ----- --------------- -------- ------ ----- - ----- -------- - ----- ----- - ------- - ---- ----- ----- -- - ---- ----- ------ - ----- ----- - ---- - - ----- --------------- -------- ------ -------- - ----- --------- - ----- ----- - ------- - ---- ------- ----- - ---- - - ----- ---------------- ------ ----- - ----- ---------- ----- ------ - ----- ----- - ------- ----- --- ---- - --- ----- - -- ----- -- - -- --------- --- ----- ------ - ---- ----- ------- ----- - ---- - - ----- --------------- -------- ------ -------- - ----- ---------- - ----- ----- - ------- ---- ----- ----- -- - ---- ----- ------ - ----- ----- --------------- -------- - - -------------- - -----
上面的代码包含了五个方法:
- create(name, email): 向数据库中添加一条新的用户记录
- find(id): 从数据库中查找指定 ID 的用户记录
- findAll(): 获取所有用户记录
- update(id, name, email): 更新指定 ID 的用户记录
- delete(id): 删除指定 ID 的用户记录
在 Express.js 应用程序中使用模型
现在,在 Express.js 应用程序中使用 User 模型。创建一个名为 app.js 的文件,并在其中实现一个最简单的 REST API,以支持 CRUD 操作:
----- ------- - ------------------- ----- ---- - ------------------------- ----- --- - ---------- ------------------------ ----- ---- - --- ------- ----------------- ----- ----- ---- -- - ----- ----- - ----- --------------- ---------------- --- --------------------- ----- ----- ---- -- - ----- - -- - - ----------- ----- ---------- - ----- -------------- --------------------- --- ------------------ ----- ----- ---- -- - ----- - ----- ----- - - --------- ----- ------- - ----- ----------------- ------- ------------------ --- --------------------- ----- ----- ---- -- - ----- - -- - - ----------- ----- - ----- ----- - - --------- ----- ----------- - ----- --------------- ----- ------- ---------------------- --- ------------------------ ----- ----- ---- -- - ----- - -- - - ----------- ----- ---------------- ------------ ----- ---------- --- ---------------- -- -- - ---------------- -- ------- -- ------------------------ ---
如上所示,我们为 GET、POST、PUT 和 DELETE 请求分别创建了路由,并调用了相应 User 模型中的方法来获取、创建、更新和删除用户记录。
将应用程序部署到生产环境中
在部署我们的应用程序之前,需要将数据库连接相关信息存储在 .env 文件中,以提高安全性。在项目根目录下创建 .env 文件,并在其中设置以下环境变量:
------------------------- ------------------------- ------------------------- ------------------ --- ------------------ --- ------------------ -
然后,可以使用以下命令来启动我们的应用程序:
--- -----
最后,可以将项目打包并上传到生产服务器,使用 PM2 等工具来促进部署和管理。
结论
在本文中,我们已经学习了如何使用 Express.js 和 PostgreSQL 来实现数据库交互。通过 Node.js 应用程序中的简单示例,我们可以看到如何创建、读取、更新和删除记录。这些技术将有助于我们构建更加复杂和实用的 Web 应用程序和 API。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/671b0d799babaf620fa738fa