「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战」。
最基本的增删查改示例
Node.js 封装一个链接数据库的文件
安装 mysql 模块:
$ npm install mysql 或 yarn add mysql
SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。
数据库操作封装:db.js
let mysql = require('mysql');
// 创建 mysql 连接池资源
let pool = mysql.createPool({
host : '服务器IP',
user : 'root',
password : '数据库密码',
database : '数据库名称'
});
exports.query = //promise化mysql查询语句,优化代码可阅读性
function (sql, sqldata) {
return new Promise(function (resolve, reject) {
pool.getConnection(function (err, connection) {
connection.query(sql, sqldata, function (err, result) {
if (err) {
console.log(err);
reject('sql查询错误了');
} else {
resolve(result)
}
connection.release();
//连接不再使用,返回到连接池
})
})
})
}
express服务下的增删查改
注意事项
- 以问号?进行占位传递参数,可防止SQL注入攻击;
- node.js操作MySQL进行增删查改本质上就是通过MySQL模块链接上数据库,执行的SQL语句
- SQL菜鸟教程:www.runoob.com/sql/sql-tut…
引入刚刚我们封装的db.js
const db = require("../db")
新增操作
async getUserlist(req, res) {
try {
let { name, password } = req.body;
let sql = `insert into adminer values (?,?,?)`;
// 0表示ID字段;自增
let result = await db.query(sql,[0, name, password ]);
res.json({
code: 0,
msg: "新增数据成功",
});
} catch (error) {
console.log(error);
}
查询操作
async getUserlist(req, res) {
try {
let sql = `select * from adminer`;
let result = await db.query(sql);
res.json({
code: 0,
msg: "查询数据成功",
});
} catch (error) {
console.log(error);
}
修改操作
根据post请求中的参数ID进行数据库修改操作
async edit_user(req, res) {
try {
let { id, name, password } = req.body;
let sql = `update adminer set name=?, password=? where id = ?`;
let result = await db.query(sql,[name,password,id]);
res.json({
code: 0,
msg: "修改成功"
});
} catch (error) {
console.log(error);
}
}
删除操作
async del_user(req, res) {
try {
let { id } = req.query;
let sql = `delete from adminer where id = ?`;
let result = await db.query(sql,[id]);
res.json({
code: 0,
msg: "删除成功"
});
} catch (error) {
console.log(error);
}
}