node.js + mysql实现基本的增删改查功能(保姆级教程---1)

node.js + mysql实现基本的增删改查(保姆级教程---1)

工具:

sqlyog可视化工具,vscode,nodejs环境(我的node.js版本号是 18.16.0)

前提条件:

电脑上要有node.js、npm、mysql服务器、可视化工具(navicat或sqlyog都行)

步骤:

  • 新建文件夹node-mysql-cruid(根目录),终端打开该目录
  • 初始化项目:npm init -y (运行这个命令,npm会在当前目录下生成一个默认的package.json文件,而无需手动输入任何信息。该配置文件中包含了项目名称、版本、描述、开发时所用到的包等信息)
  • 安装依赖:npm i express mysql (会发现文件根目录下出现了node_modules和package-lock.json文件。前者用于存储项目的依赖包,后者用于记录依赖的确切版本信息,以确保在不同环境中的一致性和可重复性)
  • 直接在sqlyog可视化工具中创建数据库node_test:

  • 然后在该数据库下建立users数据表:
use node_test;

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL
);
  • 随便在数据库里添加几条数据,当然你也可以不添加
  • 在根目录下建立db.js文件,用于连接mysql数据库,并实现对mysql数据库的信息进行增删改查操作:
const mysql = require("mysql"); // 引入mysql模块
const express = require("express"); //引入express模块
const app = express(); //创建app实例对象

const connection = mysql.createConnection({
  host: "localhost", //主机名(默认都是localhost)
  user: "root", //用户名
  password: "123456", //密码
  database: "node_test", //数据库名
});

// 测试连接
connection.connect((err) => {
  if (err) {
    console.log("数据库连接失败,原因:", err);
  } else {
    console.log("数据库连接成功!");
    // 开启服务器监听
    app.listen(3001, () => {
      console.log("服务在3001端口已开启...");
    });
  }
});
  • 终端运行db.js,测试数据库是否连接成功:node db.js
  • 然后对数据库的信息进行增删改查操作(都写在开启服务器监听前):

添加功能

// 添加功能
     app.get('/add', (req, res) => {
      const sqlStr = "INSERT INTO users(name, email) VALUES ('金离瞳', 'jwz@qq.com')";
      connection.query(sqlStr, (err, result) => {
        if (err) {
          console.log("SQL语句执行失败,原因:", err);
          res.send('添加失败');
        } else {
          console.log("SQL语句执行成功");
          res.send('添加成功');
        }
      });
    });
  • 然后终端运行该文件:

  • 浏览器访问http://localhost:3001/add,显示“添加成功”
  • 查看数据库,可见用户信息已成功添加到数据库中

查询功能

// 查询功能
    app.get('/find',(req,res) => {
      const sqlStr = "select * from users";
      connection.query(sqlStr,(err,result) => {
        if (err) {
          console.log("SQL语句查询功能执行失败,原因:", err);
          res.status(500).send("查询失败");
        } else {
          console.log("SQL语句查询功能执行成功");
          res.status(200).json({message:'查询成功',data:result})
        }
      })
    })
  • 然后终端运行该文件:

  • 浏览器访问http://localhost:3001/find,显示查询的结果:
{"message":"查询成功","data":[{"id":1,"name":"罗丽","email":"yllgz@qq.com"},{"id":2,"name":"金离瞳","email":"jwz@qq.com"},{"id":3,"name":"金离瞳","email":"jwz@qq.com"}]}

修改功能

// 修改功能
    app.put("/update/:id", (req, res) => {
      const userId = req.params.id;
      console.log("收到PUT请求的用户ID为:", userId);

      const newName = "陆瑾年"; // 修改之后的名字
      const newEmail = "shmily@qq.com";

      // 定义一个查询函数
      const sqlStr = "update users set name = ?, email = ? where id = ?";
      connection.query(sqlStr, [newName, newEmail, userId], (err, result) => {
        if (err) {
          console.error("sql语句修改功能失败,原因:", err);
          return res.status(500).send("修改失败");
        }
        console.log("sql语句修改功能成功");
        return res.status(200).send("修改成功");
      });
    });
  • 在这里注意了,浏览器地址栏通常只支持get请求,put输入是无法进行正常执行的,在运行代码前,为了测试put请求是否能够正常运行,我在postman里进行测试:

  • 显而易见,代码没有问题。(如果没有postman也没关系,往下看:)

  • 但是呢,我们并没有将一些增删改查的功能显示在页面上,因此为了测试代码是否能够成功修改数据库里面的信息,将上述代码里的post请求改为get

app.get("/update/:id", (req, res)...后面代码和上述一样

  • 查看数据库:

删除功能

// 删除功能
    app.delete("/delete/:id", (req, res) => {
      const userId = req.params.id;
      console.log("收到delete请求的用户ID为:", userId);

      // 定义一个查询函数
      const sqlStr = "delete from users where id = ?";
      connection.query(sqlStr, [userId], (err, result) => {
        if (err) {
          console.error("sql语句删除功能失败,原因:", err);
          return res.status(500).send("修改失败");
        }
        console.log("sql语句删除功能成功");
        return res.status(200).send("删除成功");
      });
    });
  • 用postman进行测试:

  • 测试通过,代码无误。

  • 和修改基本上一样喽,浏览器输入框也不支持delete请求,为了更好方便我们测试,将上述代码的delete换成get,其余代码一样

app.get("/delete/:id", (req, res)...
  • 然后终端中运行代码,浏览器输入http://localhost:3001/delete/2,显示"删除成功"

  • 查看数据库:

末尾

淡然置之有话要说:

  1. 如果在进行增删改查功能时,发现后台数据库没有变化,何不尝试刷新一下呢?
  2. 后面两个(修改和删除)操作只是为了更好进行代码的测试与功能的实现,才将请求(update和delete)改成了get,实际开发中可不能乱来呦~
  3. 尤其是添加功能,在终端运行文件的时候,添加实现后一定要注释掉再去测试功能相关的代码,不然每经一次运行文件,数据库就会被添加好多相同的用户信息...
  4. 如果哪有问题的话,即使指出哦,我在评论区等你啦啦啦~~
posted @ 2024-06-05 21:06  淡然置之  阅读(149)  评论(0编辑  收藏  举报