프로젝트 구조
project
├── node_modules
├── src
│ ├── controllers
│ │ ├── userController.js
│ │ └── productController.js
│ ├── models
│ │ ├── userModel.js
│ │ └── productModel.js
│ ├── routes
│ │ ├── userRoutes.js
│ │ └── productRoutes.js
│ ├── config
│ │ └── dbConfig.js
│ ├── app.js
│ └── server.js
├── .env
├── package.json
└── package-lock.json
DB 세팅
config/dbConfig.js
const mysql = require('mysql2');
const pool = mysql.createPool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME
});
const promisePool = pool.promise();
module.exports = promisePool;
모델 생성
models/userModel.js
const db = require('../config/dbConfig');
const getAllUsers = async () => {
const [rows] = await db.query('SELECT * FROM users');
return rows;
};
module.exports = {
getAllUsers,
};
models/productModel.js
const db = require('../config/dbConfig');
const getAllProducts = async () => {
const [rows] = await db.query('SELECT * FROM products');
return rows;
};
module.exports = {
getAllProducts,
};
Controller 생성
controllers/userController.js
const userModel = require('../models/userModel');
const getUsers = async (req, res) => {
try {
const users = await userModel.getAllUsers();
res.json(users);
} catch (error) {
res.status(500).json({ error: 'Failed to fetch users' });
}
};
module.exports = {
getUsers,
};
controllers/productController.js
const productModel = require('../models/productModel');
const getProducts = async (req, res) => {
try {
const products = await productModel.getAllProducts();
res.json(products);
} catch (error) {
res.status(500).json({ error: 'Failed to fetch products' });
}
};
module.exports = {
getProducts,
};
Router 생성
routes/userRoutes.js
const express = require('express');
const userController = require('../controllers/userController');
const router = express.Router();
router.get('/', userController.getUsers);
module.exports = router;
routes/productRoutes.js
const express = require('express');
const productController = require('../controllers/productController');
const router = express.Router();
router.get('/', productController.getProducts);
module.exports = router;
Express setup
app.js
const express = require('express');
const userRoutes = require('./routes/userRoutes');
const productRoutes = require('./routes/productRoutes');
const app = express();
app.use(express.json());
app.use('/users', userRoutes);
app.use('/products', productRoutes);
module.exports = app;
server.js
require('dotenv').config();
const app = require('./app');
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
환경변수 세팅
.env
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=password
DB_NAME=mydatabase
PORT=3000