本篇文章,接着上篇《Node.JS学习—上篇》
(1)在express工程目录下,新建一个db.js,下面的实例,我将其放到了config目录下:
(2)使用连接池连mysql,建立与远端数据库的连接
db.js
var mysql = require("mysql");
var pool = mysql.createPool({
host: '101.201.121.110',//主机
port: 3306,//端口号
user: 'xxx',//MySQL认证用户名
password: 'xxxxxx',//MySQL认证用户密码
database: 'databaseName' //数据库名称
});
function query(sql,callback){
pool.getConnection(function(err,connection){
connection.query(sql, function (err,rows) {
callback(err,rows);
connection.release();
});
});
}
exports.query = query;
(3)路由配置:在项目目录下的app.js中配置路由
app.js
(4)新建一个search.js,写一个简单的查询,测试连接数据库是否成功。
运行项目(cmd进入项目目录,执行npm start),在浏览器输入: http://localhost:3000/search 测试结果。
【测试结果如下】:awards是俺写的抽奖活动相关的接口中涉及到的一个奖品表。为了让学习的小伙伴能看到效果,真是用心良苦呀,哈哈~~~
search.js
var express = require('express');
var router = express.Router();
var db = require("../config/db");
const Unity = require('../unity/Unity');//Unity为一个工具类
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;//不加这句会报错: Router.use() requires a middleware function but got a Object (没有向外暴露,导致app.use引用不到)
Unity.js
/**
* 统一返回数据的工具类
*/
class Unity {
/**
* 统一返回参数
* @param {object} data - 返回对象;
* @param {number} code - 状态码,默认为200-成功;
* @param {number} status - 成功为1, 失败为0,默认为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();