利用 nodejs koa框架搭建后端开发环境之连接mysql

314 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情

前言

上一篇文章已经初始化好了项目,本文内容主要是介绍如何连接mysql数据库。

目录结构

image.png

创建数据库,创建数据表

image.png

image.png

安装 mysql2 用来连接mysql数据库

npm install mysql2

创建连接池

在app这个文件夹下创建database.js文件,专门用来连接数据库

const mysql = require("mysql2") // 引入依赖
const config = require('./config') // 引入配置变量

const connections = mysql.createPool({ // 创建连接池
  host: config.MYSQL_HOST, // 主机地址
  port: config.MYSQL_PORT, // 数据库端口号
  database: config.MYSQL_DATABASE, // 数据库名
  user: config.MYSQL_USER, // mysql数据库等登录名
  password: config.MYSQL_PASSWORD //密码
})

connections.getConnection((err, conn) => {
  conn.connect((err) => {
    if (err) {
      console.log("连接失败:", err)
    } else {
      console.log("数据库连接成功!")
    }
  })
})

module.exports = connections.promise()

连接数据库的配置不应该写死,所以这里用环境变量

// .env文件
MYSQL_HOST = localhost
MYSQL_PORT = 3306
MYSQL_DATABASE = blog
MYSQL_USER = root
MYSQL_PASSWORD = 123456

处理接口逻辑

首先,接口是post请求,请求用json数据

image.png

userRouter.post('/', create)

请求过来会进到create中间件

controller/user.controller.js

const userService = require('../service/user.service')

class UserController {
  async create (ctx, next) {
    // 获取用户请求的数据
    const user = ctx.request.body
    console.log(user)
    try {
      // 查询数据
      const result = await userService.create(user)
      // 返回数据
      ctx.body = result
    } catch (error) {
      ctx.body = "数据库错误"
      console.log(error)
    }
  }
}

module.exports = new UserController()

上面的代码是有问题的,因为他解释不出JSON数据,现在的user是undefined 这里我用koa-bodyparser来解析json数据 npm install koa-bodyparser

安装完成后,在入口文件app/index.js下使用

const Koa = require("koa")
const bodyParser = require('koa-bodyparser') // 用于解析json数据

const app = new Koa()

app.use(bodyParser()) // 这段代码要在路由之前
const useRoutes = require('../router')

useRoutes(app)

module.exports = app

service/user.service.js

const connection = require('../app/database')

class UserService {
  async create (user) {
    console.log("service")
    // 将用户数据保存到数据库中
    const { name, password } = user
    console.log(name, password)
    const statement = `INSERT INTO users (name, password) VALUES (?,?);`
    const result = await connection.execute(statement, [name, password])

    return result
  }
}

module.exports = new UserService()

现在就可以测试接口了

image.png

image.png

成功了!!!

写在最后

至此,文章就分享完毕了,欢迎在评论区交流。
如果文章对你有所帮助,不要忘了点上宝贵的一赞!
听说点赞的人运气都不差,相信来年第一个升职加薪的一定是你~