Express.js 中连接 MySQL 数据库的方法和最佳实践

阅读时长 7 分钟读完

介绍

在 Web 应用程序中,访问数据库是很常见的任务。而对于 Node.js 前端应用程序来说,使用 Express.js 连接 MySQL 数据库是一种常见的数据库访问方式。本文将介绍如何在 Express.js 中连接 MySQL 数据库,以及一些最佳实践来确保数据库访问安全和性能。

连接 MySQL 数据库

在 Express.js 中连接 MySQL 数据库,需要使用可用的 Node.js MySQL 客户端库。在本文中,我们将使用 mysql2 客户端库。在安装 mysql2 前,确保已经安装了 Node.js。

使用 npm 安装 mysql2:

一旦安装了 mysql2,使用以下代码连接到 MySQL 数据库:

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

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

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

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

在以上代码中,我们使用 createConnection 方法创建一个 MySQL 连接,并指定 MySQL 数据库的主机,用户名,密码和数据库名称。然后,我们使用 query 方法来执行 SQL 语句,并在回调函数中处理查询的结果。最后,我们在调用 end 方法来关闭连接。

最佳实践

1. 使用连接池

在生产环境中,应使用连接池来管理数据库连接。连接池可以减少连接创建和关闭的开销,并最大化利用数据库服务器的资源。在 Express.js 中,可以使用 mysql2 提供的连接池来连接到 MySQL 数据库。以下是连接池的示例代码:

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

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

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

在以上代码中,我们使用 createPool 方法创建一个连接池,并指定 MySQL 数据库的主机,用户名,密码和数据库名称。我们还可以使用 waitForConnections 参数指定是否等待连接可用,并使用 connectionLimit 参数来指定连接池的大小。此外,我们可以使用 queueLimit 参数指定等待连接的最大数量。

2. 使用预处理语句

使用预处理语句可以减少 SQL 注入攻击的风险,并提高数据库性能。在 Express.js 中,可以使用 mysql2 提供的 prepare 来执行预处理语句。以下是预处理语句的示例代码:

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

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

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

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

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

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

在以上代码中,我们使用预处理语句 SELECT * FROM users WHERE email = ? AND status = ?,并在 execute 方法中传递值参数 [john.doe@example.com, active]。最后,在回调函数中获取查询的结果。请注意,在 execute 方法中也可以使用占位符 ? 来代替值参数。

3. 善用索引

使用索引可以提高数据库查询的性能。在 Express.js 中,可以使用 mysql2 提供的 ALTER TABLECREATE INDEX 语句创建和修改索引。以下是使用索引的示例代码:

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

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

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

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

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

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

在以上代码中,我们使用 CREATE INDEX 语句创建名为 email_index 的索引,并在查询语句中使用 WHERE 条件语句 WHERE email = "john.doe@example.com"。请注意,这只是一种使用索引的示例,您应该在自己的项目中根据需求进行设置。

总结

在 Express.js 中连接 MySQL 数据库是一种常见的数据库访问方式。在编写代码时,我们应该遵循最佳实践,包括使用连接池管理数据库连接,使用预处理语句防止 SQL 注入攻击,以及善用索引提高数据库查询性能。本文介绍了如何在 Express.js 中连接 MySQL 数据库,并提供了示例代码以供参考。希望本文对您有所帮助。

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

纠错
反馈