You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js+MySQL项目如何将API路由与数据库连接拆分到不同文件

代码拆分实现方案

最终项目目录结构

你的项目根目录/
├── app.js          # 服务主入口文件
├── db.js           # 数据库连接配置独立文件
└── routes.js       # 业务路由独立文件

步骤1:拆分数据库配置到db.js

把原app.js中所有数据库相关的逻辑抽离到独立的db.js文件,完成后导出数据库连接实例:

const mysql = require('mysql')

const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'shop'
})

connection.connect(error => {
    if (error) throw error
    console.log('Database server running!')
})

module.exports = connection

步骤2:拆分业务路由到routes.js

使用Express内置的Router模块管理所有业务路由,引入第一步导出的数据库实例完成数据查询:

const express = require('express')
const router = express.Router()
const connection = require('./db')

// 获取所有客户列表
router.get('/customers', (req, res) => {
    const sql = 'SELECT * FROM customers'
    connection.query(sql, (err, results) => {
        if (err) throw err
        if (results.length > 0) {
            res.json(results)
        } else {
            res.send('No results!')
        }
    })
})

// 根据ID获取单个客户信息
router.get('/customers/:id', (req, res) => {
    const { id } = req.params
    const sql = `SELECT * FROM customers WHERE id = ${id}`
    connection.query(sql, (err, result) => {
        if (err) throw err
        if (result.length > 0) {
            res.json(result)
        } else {
            res.send('No result!')
        }
    })
})

module.exports = router

步骤3:改写原app.js主入口文件

移除主文件中已经拆分的数据库、路由逻辑,引入路由模块完成注册:

const express = require('express')
const bodyParser = require('body-parser')
const PORT = process.env.PORT || 3050
const app = express()
const customerRoutes = require('./routes')

app.use(bodyParser.json())
// 注册路由模块
app.use('/', customerRoutes)

app.get('/', (req, res) => {
    res.send('Welcome to my API!')
})

app.listen(PORT, () => console.log(`Server running on ${PORT}`))

注意事项

  • 原代码中直接拼接SQL参数的写法存在SQL注入风险,建议后续改为参数化查询写法:
    // 优化后的查询写法
    connection.query('SELECT * FROM customers WHERE id = ?', [id], (err, result) => {
      // 后续逻辑不变
    })
    
  • 所有文件创建完成后,直接执行node app.js即可正常启动服务,原有接口访问路径完全不变。

内容的提问来源于stack exchange,提问作者chrisjericho7788

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:36:03