本篇文章,接著上篇《Node.JS學(xué)習(xí)—上篇》
(1)在express工程目錄下忽舟,新建一個(gè)db.js霎俩,下面的實(shí)例坏为,我將其放到了config目錄下:
image.png
(2)使用連接池連mysql,建立與遠(yuǎn)端數(shù)據(jù)庫的連接
db.js
var mysql = require("mysql");
var pool = mysql.createPool({
host: '101.201.121.110',//主機(jī)
port: 3306,//端口號
user: 'xxx',//MySQL認(rèn)證用戶名
password: 'xxxxxx',//MySQL認(rèn)證用戶密碼
database: 'databaseName' //數(shù)據(jù)庫名稱
});
function query(sql,callback){
pool.getConnection(function(err,connection){
connection.query(sql, function (err,rows) {
callback(err,rows);
connection.release();
});
});
}
exports.query = query;
(3)路由配置:在項(xiàng)目目錄下的app.js中配置路由
app.js
image.png
(4)新建一個(gè)search.js,寫一個(gè)簡單的查詢,測試連接數(shù)據(jù)庫是否成功。
運(yùn)行項(xiàng)目(cmd進(jìn)入項(xiàng)目目錄,執(zhí)行npm start),在瀏覽器輸入:http://localhost:3000/search 測試結(jié)果辽剧。
【測試結(jié)果如下】:awards是俺寫的抽獎(jiǎng)活動(dòng)相關(guān)的接口中涉及到的一個(gè)獎(jiǎng)品表。為了讓學(xué)習(xí)的小伙伴能看到效果税产,真是用心良苦呀怕轿,哈哈~~~
image.png
search.js
var express = require('express');
var router = express.Router();
var db = require("../config/db");
const Unity = require('../unity/Unity');//Unity為一個(gè)工具類
const r = Unity.send;
/**
* search
*/
router.get('/', function(req, res, next) {
db.query("select * from awards",function (error, rows) {
if (error) {
res.send(r('', 200, 1, 'error'));
} else {
res.send(r(rows));
}
})
});
module.exports = router;//不加這句會(huì)報(bào)錯(cuò): Router.use() requires a middleware function but got a Object (沒有向外暴露,導(dǎo)致app.use引用不到)
Unity.js
/**
* 統(tǒng)一返回?cái)?shù)據(jù)的工具類
*/
class Unity {
/**
* 統(tǒng)一返回參數(shù)
* @param {object} data - 返回對象;
* @param {number} code - 狀態(tài)碼,默認(rèn)為200-成功;
* @param {number} status - 成功為1, 失敗為0,默認(rèn)為1;
*/
send(data, code = 200, status = 1, msg = 'success') {
if (status) {
return {
data: data,
code: code,
msg: msg
};
} else {
return {
code: code,
data: [],
msg: data
};
}
}
}
module.exports = new Unity();