Controller / Router

Jiwon Youn·2021년 1월 4일
0

index.js (router class)

const express = require('express');
const router = express.Router();
const bodyParser = require('body-parser');

const controller = require('./controller');

router.use(bodyParser.json());
router.use(bodyParser.urlencoded({ extended: true }));

router.get('/posts', controller.select);
router.post('/posts', controller.insert);
router.delete('/posts/:id', controller.remove);
router.put('/posts/:id', controller.update);

module.exports = router;

controller.js (controller class)

const mysql = require('mysql2');
const { createCipher } = require('crypto');

// 데이터베이스 연결
const con = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '1',
    database: 'express_db'
});

const select = ('/posts', async (req, res) => {
    try {
        const sql = 'select * from products'
        const [row, fields] = await con.promise().query(sql);
        console.log(row);
        res.send(row);
    } catch(err) {
        res.send('Error!');
    }
});

const insert = ('/posts', (req, res) => {
    const sql = 'insert into products set ?'
    console.log(req.body);
    // console.log(req.)
    con.query(sql, req.body, function(err, result, fields) {
        if(err) throw err;
        console.log(result);
        res.send('등록이 완료되었습니다.');
    });
});

const remove = ('/posts/:id', (req, res) => {
    const sql = 'delete from products where id=?';
    con.query(sql, [req.params.id], function(err, result, fields) {
        if(err) throw err;
        console.log(result);
        res.redirect('/');
    })
});

const update = ('/posts/:id', (req, res) => {
    const sql = 'update products set ? where id=' + req.params.id;
    con.query(sql, req.body, function(err, result, fields) {
        if(err) throw err;
        console.log(result);
        res.redirect('/');
    })
})


module.exports = {
    select: select,
    insert: insert,
    remove: remove,
    update: update
}

app.js

const path = require('path');
const mysql = require('mysql2');
const express = require('express')
const bodyParser = require('body-parser');
const { createCipher } = require('crypto');
const app = express()
const port = 3000

// 데이터베이스 연결
const con = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '1',
    database: 'express_db'
});

// 브라우저에서 입력한 값들은 POST 요청 결과로 전송 -> 처리하려면 bodyParser 필요
app.use(bodyParser.urlencoded({ extended: true }));

// router class
const posts = require('./index.js');

app.use('/', posts);
// 루트 경로에 위의 posts 객체(index.js) 등록

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

참고 출처 : https://jinbroing.tistory.com/160

0개의 댓글