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

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

时间:2024-06-05 21:13:00浏览次数:28  
标签:node console err res 数据库 改查 js mysql const

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 ('金离瞳', '[email protected]')";
      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":"[email protected]"},{"id":2,"name":"金离瞳","email":"[email protected]"},{"id":3,"name":"金离瞳","email":"[email protected]"}]}

修改功能

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

      const newName = "陆瑾年"; // 修改之后的名字
      const newEmail = "[email protected]";

      // 定义一个查询函数
      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. 如果哪有问题的话,即使指出哦,我在评论区等你啦啦啦~~

标签:node,console,err,res,数据库,改查,js,mysql,const
From: https://www.cnblogs.com/sharenotes/p/18233797

相关文章

  • node.js + mysql实现基本的增删改查功能(保姆级教程---2优化版)
    node.js+mysql实现基本的增删改查(保姆级教程---2优化版)上一个实现对增删改查功能都写在同一个文件里,代码过于冗余,我认为可以优化,分开写在不同文件里面,使得更加直观。废话不多说,直接进入主题:对之前的代码进行抽离:db.js文件(用于数据库的连接,并导出连接供其他模块使用):......
  • Android JSBridge 详解(背景和原理、特性和挑战、应用场景和实现方法)
    AndroidJSBridge详解(背景和原理、特性和挑战、应用场景和实现方法)JSBridge(JavaScriptBridge)是一种用于在JavaScript和Native代码之间进行通信的技术,常用于在Web应用中调用Native功能或在Native应用中嵌入Web页面。在Android平台上,JSBridge可以实现通过......
  • js 中 (function($){...})(jQuery) 含义
    原文链接:https://www.cnblogs.com/Jeely/p/10715089.htmljs中(function($){...})(jQuery)含义js中定义函数常用写法是functionname(arg){//arg则是匿名函数的参数。//...}调用函数时的写法是:name(arg);======================================================......
  • js有效括号匹配
    //定义一个括号映射constbracketMap=[{left:'[',right:']'},{left:'<',right:'>'},{left:'(',right:')'},......
  • 【JS】JavaScript编程语言-谷歌浏览器调试之前端代码(2024-06-05)
    1、在浏览器中调试调试是指在一个脚本中找出并修复错误的过程。所有的现代浏览器和大多数其他环境都支持调试工具——开发者工具中的一个令调试更加容易的特殊用户界面。它也可以让我们一步步地跟踪代码以查看当前实际运行情况。在这里我们将会使用Chrome(谷歌浏览器)。2......
  • js的 addEventListener如果添加的是相同名称的事件,会被覆盖吗
    在JavaScript中,使用addEventListener方法向元素添加事件监听器时,如果有多个相同的事件名称(比如多次调用addEventListener("click",function)),这些监听器不会互相覆盖,而是会累加。这意味着所有为同一事件类型注册的监听器都会按照添加的顺序依次触发,而不是只有最后一个生效。这......
  • js一般私有的方法如何命名
    在JavaScript中,对于私有方法的命名,尽管语言本身并不强制任何命名规范,但有一些广泛接受的约定来表明方法或属性的私有性。这些约定主要是为了提高代码的可读性和维护性,让其他开发者能够快速识别出哪些方法或属性是设计为内部使用的。以下是几种常见的私有方法命名约定:下划线前......
  • yarn 命令如何查看node_modules中的某个依赖包是被package.json中的哪个包所使用的?
    Yarn本身并没有直接提供一个命令来查看node_modules中的某个依赖包是由package.json中的哪个包直接或间接引入的。但是,你可以通过一些间接的方式来获取这些信息:手动检查:打开node_modules中你想查询的依赖包的package.json文件,查看它的name字段确认包名。然后回到你的项目根......
  • 【vuejs】keep-alive组件的原理讲解和使用讲解
    1.keep-alive简介Vue.js框架中的<keep-alive>组件是一个用于缓存组件实例的内置组件,它使得组件在不活动时保持其状态,从而提高应用的性能和用户体验。当使用动态组件<component>切换视图时,不在显示的组件实例会被销毁并重新创建,这会导致状态丢失。而<keep-alive>可......
  • js table sort
    备份,后面做个整理letzoneOverviewData=[]letsortFields=[]constgetSortedRows=()=>{letrows=[...zoneOverviewData];constascFields=sortFields.filter((z)=>z.sort==="asc").sort((a,b)=>(a.sortIndex>b.sor......