Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

SYDev

[Express] 5. Model 본문

대딩코딩/웹개발 스터디

[Express] 5. Model

시데브 2023. 12. 1. 14:58

데이터베이스 호출문 분리

models/homeModel.js 파일 생성 후 DB 관련 문장을 main.js에서 옮겨옴

 

 파일명: homeModel.js

require('dotenv').config();
const mysql = require('mysql2/promise');

const db = mysql.createPool({
    host: process.env.DB_HOST,
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME
});

/*
async function home() {
    const query = 'SELECT * FROM Topics;';  //테이블에 추가한 요소들 읽기(*는 전체 출력을 의미)
    const topics = await db.query(query);
}
*/

//위 함수를 모듈 형태로 작성
module.exports = {
    home: async() => {
        const query = 'SELECT * FROM Topics;';  
        const topics = await db.query(query);

        return topics[0];
    }
}

 

 

 파일명: main.js

const express = require('express');
const app = express();
const port = 3000;

app.set('view engine', 'ejs');  
app.set('views', 'views');  

const homeModel = require('./models/homeModel.js'); //homeModels.js 파일을 불러오기

app.get('/', async (req, res) => {
    const topics = await homeModel.home();  //불러온 모듈에 존재하는 함수 이용
    res.render('index.ejs', {topics: topics});  //home 함수가 topics[0]을 리턴하므로 기존 [0]은 제외
});

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`);
});

>> 모듈에서 DB 정보를 불러오고 topics에 저장

>> 코드 길이가 간결하게 줄어든 것을 확인할 수 있다.

'대딩코딩 > 웹개발 스터디' 카테고리의 다른 글

[Express] 7. Read Topic  (1) 2023.12.01
[Express] 6. Controller  (0) 2023.12.01
[Express] 4. View  (0) 2023.12.01
[Express] 3. Template과 DB연결  (1) 2023.12.01
[Express] 2. HelloWorld  (0) 2023.11.30