当我们开发Node.js后台应用时,常常需要使用数据库来存储和管理数据。而Mysql数据库是使用最广泛的关系型数据库之一。在Node.js中使用Mysql,需要使用mysql模块来连接Mysql数据库。但是,每次使用mysql模块时,都需要写很多重复的代码,包括连接数据库、执行sql语句等。为了提高开发效率,我们可以将这些常用的操作封装成一个模块,使得我们在使用时能够更加方便快捷。
以下是使用Node.js和Mysql封装一个模块的步骤:
步骤一:安装mysql模块
使用npm安装mysql模块:
npm install mysql --save
步骤二:创建db.js文件
在项目根目录下创建db.js文件,用于封装mysql模块的操作
const mysql = require("mysql");
const pool = mysql.createPool({
host: "localhost",
user: "root",
password: "123456",
database: "test"
});
let query = function(sql, values) {
return new Promise((resolve, reject) => {
pool.getConnection(function(err, connection) {
if (err) reject(err);
else {
connection.query(sql, values, (err, rows) => {
if (err) reject(err);
else {
resolve(rows);
}
connection.release();
});
}
});
});
};
module.exports = { query };
在上面的代码中,我们使用mysql模块创建了一个连接池,并通过Promise异步操作的方式封装了mysql的query方法。
步骤三:在业务模块中使用db.js文件
在业务模块中使用db.js文件中的query方法,如下:
const express = require("express");
const router = express.Router();
const db = require("../db");
router.get("/", async function(req, res) {
try {
let result = await db.query("SELECT * FROM users WHERE id=?", [1]);
res.json(result);
} catch (err) {
console.error(err);
res.status(500).send("服务器内部错误:" + err.message);
}
});
module.exports = router;
在上面的代码中,我们在业务模块中引入了db.js文件,并使用await异步操作的方式调用了其中的query方法。
至此,一个开箱即用的Node.js+Mysql模块封装实现就完成了。
下面是示例说明:
示例一:查询用户列表
const express = require("express");
const router = express.Router();
const db = require("../db");
router.get("/", async function(req, res) {
try {
let result = await db.query("SELECT * FROM users");
res.json(result);
} catch (err) {
console.error(err);
res.status(500).send("服务器内部错误:" + err.message);
}
});
module.exports = router;
在上面的代码中,我们在业务模块中调用了db.js文件中的query方法,查询了users表中的所有数据,并将查询结果以json格式返回。
示例二:添加用户
const express = require("express");
const router = express.Router();
const db = require("../db");
router.post("/", async function(req, res) {
const { name, age, sex } = req.body;
try {
let result = await db.query("INSERT INTO users(name, age, sex) VALUES(?,?,?)", [name, age, sex]);
res.json({ id: result.insertId });
} catch (err) {
console.error(err);
res.status(500).send("服务器内部错误:" + err.message);
}
});
module.exports = router;
在上面的代码中,我们在业务模块中调用了db.js文件中的query方法,向users表中添加了一条数据,并返回添加数据的id。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:开箱即用的Node.js+Mysql模块封装实现详解 - Python技术站