栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

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

如何通过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语句的语法可以查看作者另一篇数据库语句的文章

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/312643.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号