最近学习web前端的时候遇到一个问题,就是实现数据库连接跟路由的分离。
这里所有的文件为了方便显示我让他们的跟目录都相同
具体实现如下:
1.conn.js 创建数据库连接池
var
mysql =
require(
'mysql')
//连接池
var
pool =
mysql.
createPool({
host:
'127.0.0.1',
user:
'root',
password:
'haosql',
database:
'mydb',
port:
'3306'
})
function
query(
sql,
options,
callback){
pool.
getConnection(
function(
err,
conn){
if(
err){
callback(
err)
}
else{
conn.
query(
sql,
options,
function(
err,
result,
fields){
callback(
err,
result,
fields)
//事件驱动回调
conn.
release()
//释放连接
})
}
})
}
module.
exports =
query
这里我在数据库里面建立了一个user用户表
下面的api.js的功能是将数据表user里的所有用户信息以json的格式发送到前端接口(http://localhost:3000/api/userlist)
这样前端就能通过这个端口拿到数据
2. api.js
var
express =
require(
'express')
var
router =
express.
Router()
var
crypto =
require(
'crypto')
//导入数据库连接
var
query =
require(
'./conn')
router.
get(
'/userlist',(
req,
res)
=> {
var
sql =
$sql.
user.
userList
query
(
"select * from user"
, [],
function
(
err
,
result
) {
if (
err) {
console.
log(
err)
}
if (
result) {
console.
log(
"userlist--get请求成功")
res.
send(
result)
}
})
})
3.sever.js
// node 后端服务器
const
fs =
require(
'fs')
const
path =
require(
'path')
const
bodyParser =
require(
'body-parser')
const
express =
require(
'express')
const
app =
express()
const
Api =
require(
'./api')
//配置模板引擎和body-parser一定要在app.use(router)挂载路由之前
app.
use(
bodyParser.
json())
//处理json
app.
use(
bodyParser.
urlencoded({
extended:
false}))
//中间件
// 把路由挂载到app中
app.
use(
'/api',
Api)
//myapi是自己添加的,根据环境来
app.
use(
function(
err,
req,
res,
next){
var
err =
new
Error(
'not found')
err.
status =
404
next(
err)
})
// 监听端口
app.
listen(
3000)
console.
log(
'success listen to port:3000......')
4.启动服务器
node server.js
相信小伙伴们看到这里已经明白了吧
这是本人第一次写博客,有什么不对还望指出,欢迎交流