Skip to content

快速创建nodejs项目,连接MySQL实现增删改查

  1. 准备工作

    • 运行环境

      tex
      > node -v
      v20.2.0
      
      > mysql --help
      mysql  Ver 14.14 Distrib 5.7.41, for Win64 (x86_64)
      Copyright (c) 2000, 2023, Oracle and/or its affiliates.
    • 创建数据库和测试表

      mysql
      CREATE DATABASE `vitepress-docs-demos` /*!40100 DEFAULT CHARACTER SET utf8mb4 */
      mysql
      CREATE TABLE `t_user` (
        `id` int(10) NOT NULL AUTO_INCREMENT,
        `username` varchar(50) NOT NULL,
        `password` varchar(500) NOT NULL,
        PRIMARY KEY (`id`)
      ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4
    • 初始化package.json

      tex
      npm init -y
  2. 安装依赖

    tex
    npm install express
    tex
    npm install cors
    tex
    npm install mysql
  3. 创建db/config.js, 用于配置mysql数据库

    javascript
    let mysql = require('mysql')
    
    let db = mysql.createPool({
        host: '127.0.0.1',     // 数据库IP地址
        port: 3306,   // 数据库端口
        user: 'root',          // 数据库登录账号
        password: 'root',      // 数据库登录密码
        database: 'vitepress-docs-demos',       // 要操作的数据库
        charset: 'utf8mb4' // 数据库字符集,涉及表情的存储,所以创建数据库时指定为utf8mb4
    })
    
    module.exports = db
  4. 创建测试接口api/user.js

    javascript
    const db = require('../db/config')
    
    exports.getUserById = (req, res) => {
        // get请求用req.query.参数名
        // post请求用req.body.参数名
        const id = req.query.id;
        
        var sql = `
    		select * from t_user where id = ?
    	 `;
        // 第二个参数的数量是可变的,有几个占位符数组里就几个参数值
        db.query(sql, [id], (error, result) => {
            if (error) {
                res.send(error);
            }
            
            res.send(result);
        });
    }
  5. 配置接口路由,创建router.js

    javascript
    const express = require('express')
    const router = express.Router()
    
    // 接口集合
    const user = require('./api/user')
    
    router.get('/api/user/getUserById', user.getUserById)
    
    module.exports = router
  6. 创建app.js, 用于配置服务器相关信息

    javascript
    let express = require('express')
    let app = express()
    let cors = require('cors')
    let bodyParser = require('body-parser')
    let router = require('./router')
    
    // 配置解析,用于解析json和urlencoded格式的数据
    app.use(bodyParser.json());  
    app.use(bodyParser.urlencoded({ extended: false }));
    
    //配置跨域,必须在路由之前
    app.use(cors());
    
    // 路由列表
    app.use(router);
    
    // 解决跨域
    app.all('*', function (req, res, next) {
        res.header('Access-Control-Allow-Origin', '*')
        res.header('Access-Control-Allow-Headers', 'Content-Type')
        res.header('Access-Control-Allow-Methods', '*')
        res.header('Content-Type', 'application/json;charset=utf-8')
        next()
    })
    
    app.listen(80, () => {
       
        console.log('服务器启动成功');
    })
  7. 创建完毕后的目录结构, 在项目根目录下执行 node app.js 开启项目

    tex
    vitepress-docs-node
     ┣ api
     ┃ ┗ user.js
     ┣ db
     ┃ ┗ config.js
     ┣ .gitignore
     ┣ app.js
     ┣ package-lock.json
     ┣ package.json
     ┗ router.js
  8. 使用工具进行测试

    image-20240805183245598

MIT版权,未经许可禁止任何形式的转载