Koa 集成 Sequelize 框架:数据库操作实战教程

阅读时长 12 分钟读完

前言

Koa 是一个 Node.js Web 框架,它可以让我们更加优雅地构建 Web 应用程序,其核心理念是中间件(Middleware)。Sequelize 是一个基于 Promise 的 ORM 框架,支持多种数据库(如 MySQL, PostgreSQL,SQLite, MSSQL)的操作。Koa 集成 Sequelize 可以帮助我们更加方便地进行数据库操作。

本文将介绍如何在 Koa 中使用 Sequelize,包括数据库连接、模型定义、数据的增删改查等操作。

环境搭建

在开始使用 Koa 集成 Sequelize 前,需要安装 Node.js、npm、MySQL 等环境。

首先,创建一个 Koa 项目:

然后安装 Koa 和 Sequelize:

数据库连接

在使用 Sequelize 前,需要先连接数据库。在项目根目录新建 config.js 文件,用于存放数据库相关配置:

其中,usernamepassword 为数据库用户名和密码,database 是要连接的数据库名称,host 是数据库服务器地址。

接着,在 app.js 中引用 Sequelize,并连接数据库:

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

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

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

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

如果输出 Connection has been established successfully.,表示连接数据库成功。

模型定义

在使用 Sequelize 操作数据库时,需要先对应用的数据模型进行定义,然后通过模型进行数据的增删改查等操作。

在新项目根目录下新建 models 文件夹,然后在该文件夹下新建 user.js 文件,用于定义用户表模型:

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

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

其中,User 模型代表了 users 表。

路由定义

app.js 中定义路由,用于接收 HTTP 请求并处理数据:

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

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

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

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

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

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

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

上述路由中,User.findAll() 用于获取所有用户,User.findByPk(id) 用于获取指定用户,User.create({ ... }) 用于创建新用户,user.destroy() 用于删除用户,user.save() 用于修改用户。

示例代码

完整的示例代码如下:

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

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

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

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

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

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

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

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

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

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

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

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

总结

本文介绍了如何在 Koa 中集成 Sequelize,包括数据库连接、模型定义、以及数据的增删改查等操作。希望可以对大家理解 Koa 和 Sequelize 的使用有所帮助。

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

纠错
反馈