express链接mysql, 用数据库连接池管理链接

时间:2023-03-08 16:31:43

1、在API的开发当中,数据库的处理显得尤为重要,express 工程 链接mysql数据库有很好的模板可以借鉴。

1.1 创建数据库链接

新建一个DB目录,在DB目录下新建文件 db.js

内容如下

/**
* Created by wjw on 2018/10/13.
*/
//db.js
// connect mySql
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit: 10,
host: 'localhost',
user: 'root',
password: '0',
database: 'testForApi' }); function query(sql, values, callback) {
console.log("db pool");
pool.getConnection(function (err, connection) {
if(err) throw err;
console.log("get connection ");
//Use the connection
connection.query(sql, values,function (err, results, fields) {
console.log(JSON.stringify(results));
//每次查询都会 回调
callback(err, results);
//只是释放链接,在缓冲池了,没有被销毁
connection.release();
if(err) throw error; }); });
} exports.query = query;

1.2新建一个关于 user 对象的sql查询管理类 userSql.js 它会被userRouter.js, api.js 等相关路由模块所引用,方便扩展.这里以 api.js 为例:

var UserSql = {
insert : 'INSERT INTO User(id, userName, password) VALUES(?,?,?) ',
query : 'SELECT * FROM user ',
getUserById: 'SELECT * FROM user WHERE uid = ? '
}; module.exports = UserSql;

1.3在 API.js 中写一个获取 数据库中所有user 表信息的 API。

api.js 在routers 目录下。和 index.js ,user.js同级

var express = require('express');
var router = express.Router(); var db = require('../db/db'); //引入db
var userSql = require('../db/userSql'); router.get("/getAllUsers", function (req, res, next) {
var results = {};
db.query(userSql.query, [], function (err, rows) {
results = rows;
console.log("results: " + results.str);
res.send(results);
});
}); module.exports = router;

2、在浏览器中输入 http://localhost:3000/api/getAllUsers,可以读取数据库信息,这里只是简单的把 user表信息全部读取。

express链接mysql, 用数据库连接池管理链接