一.nodejs 连接 mysql 基础使用

STRAT

  • 最近买了个服务器。作为一个前端,还是想全凭自己做一个简易的系统玩一玩。所以开始自己研究搭建一个简单的后台。
  • 做了一个简单的后端服务,写个博客记录一下。
  • 数据库相关说明暂时略过,后期有时间再补充了
  • 作者: lazy_tomato 2022/03/28-20/22

安装依赖

# 处理post请求的
npm i body-parser

# 基本后端框架
npm i express

# 连接mysql的工具
npm i mysql

# node热启动插件
npm i nodemon
"dependencies": {
    "body-parser": "^1.19.2",
    "express": "^4.17.2",
    "mysql": "^2.18.1",
    "nodemon": "^2.0.15"
  }

运行脚本

"scripts": {
    "dev": "npx nodemon server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

目录结构

在这里插入图片描述

主要文件

server.js

const express = require('express')
const bodyParser = require('body-parser')
const router = require('./app/router/router')
const app = express()

// 跨域请求处理
app.all('*', (req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*')
  res.header('Access-Control-Allow-Headers', 'X-Requested-With')
  res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With, X_Requested_With')
  res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS')
  //允许接收的请求头上加上一个Authorization,这样我们才能够将数据发送过去
  res.header('X-Powered-By', '3.2.1')
  if (req.method == 'OPTIONS') res.send(200)
  /*让options请求快速返回*/ else next()
})



app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())


app.use(router)

// 3000 8080 9527 5000
app.listen('5000', () => {
  console.log('Server is running 5000');
})

db.js

// 1.引入mysql连接插件
var mysql = require('mysql')

// 2.通过插件生成一个连接池,传入参数为数据库配置
var pool = mysql.createPool({
    host: 'localhost', // 本机IP
    user: 'root', // 用户名
    password: '123456', // 密码
    database: 'healthy'  // 数据库名称
});

// 3.定义一个查询数据库的方法 
var query = function (sql, callback) {
    // 3.1 创建一个连接
    pool.getConnection(function (err, conn) {
        if (err) {
            callback(err, null, null);
        } else {
            conn.query(sql, function (qerr, vals, fields) {
                // 3.2 释放连接  *这个地方需要注意,查看了很多文章,释放连接应当在 conn.query 方法中*     
                conn.release();
                // 3.3 回调    
                callback(qerr, vals, fields);
            });
        }
    });
};

// 4.导出查询的方法
module.exports = query; 

router.js

const express = require('express')
const query = require('../modul/db.js')

const router = express.Router()


// 获取所有部门信息
router.get('/', (req, res) => {
  res.send('欢迎访问lazy_tomato服务')
})

// 测试数据库连接接口
router.get('/demo', (req, res) => {
  let sql = `SELECT * FROM account`
  query({
    sql: sql
  }, (err, results) => {
    if (err) {
      console.log(err)
    } else {
      res.send(results)
    }
  })
})

运行效果

1

END


版权声明:本文为wswq2505655377原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。