目录结构:
连接数据库公共文件:
// fools/sql.js // 1.加载mysql var mysql = require('mysql'); // 2.创建连接 var connection = mysql.createConnection({ host: 'localhost', // 你要连接的数据库服务器的地址 port: 3306, // 端口号 user: 'root', // 连接数据库服务器需要的用户名 password: 'root', // 连接数据库服务器需要的密码 database: 'node136' //你要连接的数据库的名字 }); // 3.连接数据库 connection.connect((err) => { // 如果有错误对象,表示连接失败 if (err) return console.log('数据库连接失败') // 没有错误对象提示连接成功 console.log('mysql数据库连接成功') }); module.exports = connection
原文件:
const express = require('express') const app = express() app.use(express.urlencoded()) const connection = require('./fools/sql') app.post('/api/student', (req, res) => { // 接受普通键值对的参数 const { username, age } = req.body // 添加到数据库 const sql = `insert into student(username,age) values('${username}',${age})` // 打印查看sql语句是否有拼接错误 注意引号!!! // console.log(sql); connection.query(sql, (err, data) => { if (err) { console.log(err); res.json({ msg: '添加失败', code: 0 }) } else { res.json({ msg: '添加成功', code: 1 }) } }) }) app.get('/api/student', (req, res) => { const sql = `select * from student` connection.query(sql, (err, data) => { if (err) { res.json({ msg: '查询失败', code: 0 }) } else { res.json({ msg: '查询成功', code: 1, result: data }) } }) }) app.listen(8080,() => { console.log('8080端口监听中....'); })
因接口都写在一次,未来项目体积变大时,难以维护。
所以为了方便维护,使用以下方法优化路由
1.初始化npm,下载第三方模块
创建项目根目录,使用npm初始化及下载模块
npm init -y
npm i express mysql
2.连接数据库,设置路由规则
创建文件便于管理路由:
1.在项目根目录创建router文件夹。
2.在文件夹内根据接口路径分类存放
引入express模块,使用模块的Router方法。
get方法:
const express = require('express')
const router = express.Router()
const connection = require('../../fools/sql')
router.get('/student', (req, res) => {
const sql = 'select * from student'
connection.query(sql, (err, data) => {
if (err) {
res.json({ msg: '查询失败', code: 0 })
} else {
res.json({ msg: '查询成功', code: 1, result: data })
}
})
})
module.exports = router; // 模块导出
post方法:
const express = require('express')
const router = express.Router()
router.use(express.urlencoded())
const connection = require('../../fools/sql')
router.post('/student', (req, res) => {
// 接受普通键值对的参数
const { username, age } = req.body
// 添加到数据库
const sql = `insert into student(username,age) values('${username}',${age})`
// 打印查看sql语句是否有拼接错误 注意引号!!!
// console.log(sql);
connection.query(sql, (err, data) => {
if (err) {
console.log(err);
res.json({ msg: '添加失败', code: 0 })
} else {
res.json({ msg: '添加成功', code: 1 })
}
})
})
module.exports = router; // 模块导出
3.整合
const express = require('express')
const app = express()
const getStudent = require('./router/api/getStudent')
const postStudent = require('./router/api/postStudent')
// 路由中间件
app.use('/api', getStudent)
app.use('/api', postStudent)
app.listen(8080, () => {
console.log('8080端口监听中....');
})