如何通过node.js操作数据库

创建数据库操作模块的步骤为:

  1. 导入数据库模块
    const mysql = require(“mysql”)
  2. 创建数据库连接
    const db = mysql.createPool({
    host:‘服务器地址’,
    user:‘数据库用户名’,
    password:‘数据库密码’,
    database:‘数据库名称’
    })
  3. 创建请求监听事件
  4. 在请求监听事件里面通过数据库连接调用query方法,并写入当前监听地址的sql语句,准备对数据库进行操作
  5. 通过db.query里面的回调函数值err是否存在,来判断数据库是否连接成功(和fs模块的读写操作类似)
  6. 如果连接成功了,则通过db.query()中写好的sql语句进行操作,并根据数据库操作时,数据库端中的data.affectedRows相应值进行判定是否操作成功,如果操作成功,则响应值为1,否则return中断代码执行,并返回一个错误提示
  7. 据此,确认成功之后,才通过请求事件监听的res.send()方法,向客户端响应数据

参考实例

单纯的数据库操作模块并不需要创建web服务器,在以下实例演示过程中,创建web服务器是为了对数据库操作进行验证

const express = require("express"); // 导入express服务器模块
const mysql = require("mysql"); //导入数据库模块
const app = express(); //创建服务器
app.use(express.urlencoded({ extended: false })); //导入urlencoded内置模块,对传入的application类型数据进行转码,让其可以被读取,如果不写,在读取该类型数据时会返回undefined
const db = mysql.createPool({  //创建一个数据库连接,后面的监听请求通过其内的query方法对数据库内的数据进行处理
  host: "127.0.0.1", //表示连接哪一个服务器上的mysql数据库,此处填写的是本地数据库
  user: "root", //数据库的用户名,root是默认用户名
  password: "root", // 数据库的密码,root是默认密码
  database: "ljh", //数据库名称
});
// 查询模块
app.get("/getuser", (req, res) => {  //设置一个查询监听事件,/getuser是请求监听的地址名
  db.query("select * from user", (err, data) => {
    if (err) return console.log(err.message);// 验证测试对象是否连接成功
    if (data.length == 0) return console, log("表里面没有数据");
    res.send({
      status: 0,
      msg: "get请求成功",
      data: data,
    });
  });
});
//  添加模块
app.post("/postuser", (req, res) => {
  const data = req.body;
  db.query("insert into user set ?", data, (err, data) => {  //这里的?作用是将sql语句进行动态的拼接,以保证对客户端请求的不同数据对sql库中相应的值进行调用
    if (err) return console.log(err.message);
    //通过数据库写入成功时出现的affectedRows=1作为依据,判断数据是否写入成功
    if (data.affectedRows != 1) return console.log("数据写入失败");
    res.send({
      status: 0,
      msg: "数据写入成功",
    });
  });
});
//  更改模块
app.post("/updateuser", (req, res) => {
  const data = req.body;
  db.query("update user set ? where id =?", [data, data.id], (err, data) => { // 通过数组的形式写入,第一个数组元素传给第一个?,第二个数组元素传给第二个?
    if (err) {
      return console.log("err.message");
    }
    if (data.affectedRows != 1) {
      return console.log("数据库更新时失败");
    }
    res.send({
      status: 0,
      msg: "数据更新成功",
      data: data,
    });
  });
});
//  删除模块
app.get("/deluser/:id", (req, res) => {
  const params = req.params.id;  // 动态获取客户端传入的id参数
  db.query("delete from user where id = ?", params, (err, data) => { // sql删除语句,拼接上id,表示对当前id绑定的数据组进行操作
    if (err) {
      return console.log(err.message);
    }
    if (data.affectedRows != 1) {
      return console.log("数据删除失败");
    }
    res.send({
      status: 0,
      msg: "数据删除成功",
    });
  });
});
*//假删除模块    该模块出现原因是因为数据删除是不可逆的操作,所以通常使用更改status显示来操作,方便数据的找回*
app.get("/undeluser/:id", (req, res) => {
  const params = req.params.id;
  db.query("update user set status = 0 where id = ?", params, (err, data) => {
    if (err) {
      return console.log(err.message);
    }
    if (data.affectedRows != 1) {
      return console.log("数据假删除失败");
    }
    res.send({
      status: 0,
      msg: "数据假删除成功",
      data: data,
    });
  });
});
app.listen(5000, () => {  //  开启服务器,进行测试
  console.log("http://127.0.0.1:5000");
});

常用sql语句的语法可以查看作者另一篇数据库语句的文章

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值