feat(server): 重构服务端架构并集成MySQL数据库

- 添加MySQL数据库配置,包含主机地址、端口、用户名、密码和数据库名
- 创建独立的Koa服务器模块,包含路由配置和静态文件服务
- 实现MySQL连接池配置,支持命名占位符查询格式化
- 调整项目入口文件结构,分离MySQL和Koa服务模块
- 更新package.json配置,修改主入口文件并添加mysql2依赖
This commit is contained in:
2025-12-24 22:27:36 +08:00
parent 57aff59b45
commit 18600b3015
6 changed files with 59 additions and 32 deletions

0
module/server/.env Normal file
View File

View File

@@ -1,3 +1,9 @@
export default {
mysql: {
host: '192.168.25.110',
port: 3307,
user: 'root',
password: 'mysql_Adkijc',
database: 'mir_web'
}
}

View File

@@ -1,29 +1,2 @@
import Koa from 'koa';
import Router from 'koa-router';
import config from "./config/index.js"
import koaStatic from 'koa-static';
const app = new Koa();
const router = new Router();
// 简单的路由示例
router.get('/', (ctx) => {
ctx.body = {message: 'Hello from Koa server!'};
});
router.get('/api/test', (ctx) => {
ctx.body = {message: 'This is a test API endpoint'};
});
router.get('/api/config', (ctx) => {
ctx.body = {data: config}
})
app.use(router.routes());
app.use(router.allowedMethods());
app.use(koaStatic('/www'))
const PORT = process.env.PORT || 3001;
app.listen(PORT, () => {
console.log(`Koa server is running on port ${PORT}`);
});
import "./mysql/index.js"
import "./koa/index.js"

View File

@@ -0,0 +1,29 @@
import Koa from 'koa';
import Router from 'koa-router';
import config from "../config/index.js"
import koaStatic from 'koa-static';
const app = new Koa();
const router = new Router();
// 简单的路由示例
router.get('/', (ctx) => {
ctx.body = {message: 'Hello from Koa server!'};
});
router.get('/api/test', (ctx) => {
ctx.body = {message: 'This is a test API endpoint'};
});
router.get('/api/config', (ctx) => {
ctx.body = {data: config}
})
app.use(router.routes());
app.use(router.allowedMethods());
app.use(koaStatic('/www'))
const PORT = process.env.PORT || 3001;
app.listen(PORT, () => {
console.log(`Koa server is running on port ${PORT}`);
});

View File

@@ -0,0 +1,18 @@
import mysql from "mysql2";
import config from "../config/index.js";
const pool = mysql.createPool({
...config.mysql,
queryFormat: function (sql, values) {
const opts = { sql, values }
this._resolveNamedPlaceholders(opts)
return mysql2.format(
opts.sql,
opts.values,
this.config.stringifyObjects,
this.config.timezone
)
}
});
export default pool.promise();

View File

@@ -2,7 +2,7 @@
"name": "chuanqi-server",
"version": "1.0.0",
"description": "A simple Koa server for chuanqi web",
"main": "index.js",
"main": "koa/index.js",
"type": "module",
"scripts": {
"start": "node index.js",
@@ -11,6 +11,7 @@
"dependencies": {
"koa": "^2.15.0",
"koa-router": "^12.0.0",
"koa-static": "^5.0.0"
"koa-static": "^5.0.0",
"mysql2": "^3.16.0"
}
}