Nodejs服务文件结构

一、准备工作

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)
})

你可能感兴趣的:(nodejs,前端)