Skip to content
📈0️⃣

Koa2 连接 MySQL 数据库

要在 Koa2 中实现 MySQL 数据库的增删改查操作,需要通过适当的 MySQL 驱动程序(如 mysql)与 Koa 结合使用。以下是一个简单的示例,展示如何在 Koa2 中连接 MySQL 数据库并实现增删改查操作:

1. 安装 MySQL 模块

  • 在项目目录下运行以下命令安装 mysql 模块:
bash
npm install mysql --save
  • 在项目目录下运行以下命令安装 ​koa-bodyparser 模块:
bash
npm install ​koa-bodyparser --save

使用 ​koa-bodyparser​ 中间件后,当客户端发送 POST 或 PUT 请求时,其中包含表单数据或 JSON 数据时,​koa-bodyparser​ 将自动解析请求体,并将解析后的数据存储在 ​ctx.request.body​ 中,以便后续处理。

2. 编写数据库配置

  • 创建一个 utils/db.js 文件,并编写数据库连接的相关配置信息:
js
const mysql = require("mysql");
const pool = mysql.createPool({
  host: "localhost",
  user: "your_username",
  password: "your_password",
  database: "your_database",
});

function query(sql, values) {
  return new Promise((resolve, reject) => {
    pool.getConnection((err, connection) => {
      if (err) {
        reject(err);
      } else {
        connection.query(sql, values, (error, results, fields) => {
          connection.release();
          if (error) {
            reject(error);
          } else {
            resolve(results);
          }
        });
      }
    });
  });
}

module.exports = {
  query,
};

3. 编写 Koa 路由处理

  • 创建一个 router/index.js 文件,编写 Koa2 的路由处理函数,实现增删改查操作
  • 如果你已经做了路由拆分, 可以在 router/users.js 中编写路由处理函数
js
const Router = require("koa-router");
const db = require("./../utils/db");

const router = new Router();

// 查询数据
router.get("/users", async (ctx) => {
  const [rows] = await db.query("SELECT * FROM users");
  ctx.body = rows;
});

// 新增数据
router.post("/users", async (ctx) => {
  const { name, email } = ctx.request.body;
  await db.query("INSERT INTO users (name, email) VALUES (?, ?)", [
    name,
    email,
  ]);
  ctx.body = "User added successfully";
});

// 更新数据
router.put("/users/:id", async (ctx) => {
  const { name, email } = ctx.request.body;
  const { id } = ctx.params;
  await db.query("UPDATE users SET name = ?, email = ? WHERE id = ?", [
    name,
    email,
    id,
  ]);
  ctx.body = "User updated successfully";
});

// 删除数据
router.delete("/users/:id", async (ctx) => {
  const { id } = ctx.params;
  await db.query("DELETE FROM users WHERE id = ?", [id]);
  ctx.body = "User deleted successfully";
});

module.exports = router;
sql
-- 创建 users 表
CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(255),
  email VARCHAR(255)
);
-- 查看表描述
DESC users;
-- 或者
DESCRIBE users;

4. 创建 Koa 应用

  • 编写一个 app.js 文件,创建 Koa2 应用,并将数据库路由挂载到应用上:
js
const Koa = require("koa");
const bodyParser = require("koa-bodyparser");
const router = require("./router");

const app = new Koa();

app.use(bodyParser());
app.use(router.routes());
app.use(router.allowedMethods());

app.listen(3000, () => {
  console.log("Server is running on http://localhost:3000");
});

5. 运行应用

  • 在命令行中运行以下命令启动 Koa2 应用:
bash
node app.js

通过上述步骤,您可以在 Koa2 中实现 MySQL 数据库的增删改查操作。请确保您的数据库和表已经设置好,可以根据实际需求修改代码中的 SQL 查询语句。