一、准备工作
1、创建文件;
nodejs_server
|_ _server.js; // 服务启动文件
|
|_ _configs // 文件夹
| |_ _ _ main.js // 服务配置文件
|
|_ _routers // 文件夹
| |_ _ _ public.js // 路由配置文件
|
|_ _controllers // 文件夹
| |_ _ _ public.js // 逻辑处理文件
|
|_ _models // 文件夹
|_ _ _ database.js // 数据库连接配置文件
|_ _ _ public.js // 模型文件
二、软件安装
1、初始化npm
npm init -y
2、安装软件
npm i express // express框架
npm i body-parser // 解析请求参数
npm i cors // 处理跨域
npm i mysql2 // 连接数据库(mysql已弃用,推荐mysql2)
三、文件配置
1、nodejs_server/configs/main.js
module.exports = {
port: 3000, // 端口配置
dbUrl: "localhost",
}
2、nodejs_server/models/database.js
const mysql = require('mysql2/promise');
const config = require('../config/main')
// 创建mysql连接池
const pool = mysql.createPool({
host: config.dbUrl, // 数据库服务器地址
user: 'yourUsername', // 数据库用户名
password: 'yourPassword', // 数据库密码
database: 'yourDatabase', // 数据库名
waitForConnections: true, // 等待连接变为可用时,队列中的请求是否应该暂停
connectionLimit: 10, // 连接池中最大连接数
queueLimit: 0 // 超出最大连接数时,排队请求的最大长度。0为无限制
})
// sql执行函数
const executeSql = async (sql, params) => {
// 测试配置
//return new Promise((resolve, reject) => {
//resolve('请求成功')
//});
// 数据库查询配置
try {
const [results] = await pool.execute(sql, params);
return results;
} catch (err) {
console.error('数据库查询失败', err);
throw err; // 可以根据需要选择是否抛出错误
} finally {
// 注意:在mysql2中,不需要手动释放连接,连接会自动返回池中。
}
}
// 导出sql执行函数
module.exports = {
executeSql
}
3、nodejs_server/models/public.js
const db = require("./database")
// 定义模型
exports.getAllUser = async () => {
return await db.executeSql('SELECT * FROM yourTable', "")
}
4、nodejs_server/controllers/public.js
const pubModel = require('../model/public')
// 定义逻辑处理函数
exports.test = async (req, res) => {
let result = await pubModel.getAllUser()
res.status(200).json({
code: 0,
message: result,
data: []
})
}
5、nodejs_server/routers/public.js
const express = require('express');
const router = express.Router();
const pubControllers = require('../controllers/public.js')
// 路由定义
router.get("/test", pubControllers.test)
// 路由导出
module.exports = router
6、server.js
const express = require('express'); // 引入express
const cors = require('cors') // 引入cors
const config = require("./config/main.js") // 引入配置文件
const pubRouters = require('./routers/public.js') // 引入public路由文件
// 模块应用
const app = express() // 创建express实例
app.use('/public', pubRouters) // 所有public开头的请求,转发至pubRouters
app.use(cors()); // 使用cors中间件。允许所有跨域请求。根据实际需要可以更精细地控制。例如:app.use(cors({origin: 'http://example.com'}));
// 服务监听
app.listen(config.port, () => {
console.log(`服务启动成功,监听端口: ${config.port}`)
})
app.on('error', (error) => {
console.log("服务启动失败", error)
})