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

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表信息全部读取。

原文地址:https://www.cnblogs.com/wjw-blog/p/9786660.html