ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๊ฒŒ์‹œํŒ์— ๊ธ€์„ ์“ฐ๋Š” ์ž‘์—…๋„ ์ด์–ด์„œ ์ง„ํ–‰ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์‹œ๊ธ€์„ ์“ด๋‹ค๋Š” ๊ฒƒ์€ DB์— ๋‚ด๊ฐ€ ์“ด ๊ฒŒ์‹œ๊ธ€์˜ ๋‚ด์šฉ์ด ์ €์žฅ๋œ๋‹ค๋Š” ๋œป ์ด๊ฒ ์ฃ ? ์ผ๋‹จ ๊ฐ„๋‹จํ•œ ๊ธ€ ์“ฐ๊ธฐ ํŽ˜์ด์ง€ ํผ์„ ์ž‘์„ฑํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.



views/write.pug

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
link(rel='stylesheet', href='css/bootstrap.css')
link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.4/css/bootstrap-select.min.css')
ons-page
    ons-toolbar
    div(style='text-align: center; margin-top:3%;')
        section(style='padding: 8px')
            textarea.text-input#subject(type='text', ng-model='text', placeholder='์ œ๋ชฉ', style='width: 80%; height:30px;')
        section(style='padding: 0 8px 8px')
            textarea.textarea#content(ng-model='text2', placeholder='๋‚ด์šฉ', style='width: 80%; height: 400px;')
        section(style='padding: 0 8px 8px')
            button(type="button" class='btn btn-primary' onclick='submitFunction()') Submit
 
script.
    var subject = document.getElementById('subject');
    var content = document.getElementById('content');
    var url = 'http://localhost:3000/write_receive';
    function submitFunction() {
        var data = {'subject':subject.value, 'content':content.value};
        data = JSON.stringify(data);
        var xhr = new XMLHttpRequest();
        xhr.open('POST',url,true);
        xhr.setRequestHeader('Content-type','application/json');
        xhr.send(data);
        xhr.addEventListener('load',function(){
            var result = JSON.parse(xhr.responseText);
            if(result.result=='ok'){
                alert('์ž‘์„ฑ์™„๋ฃŒ')
                location.replace('http://localhost:3000/commuity')
            }
        })
    }
cs


์ด ๋ถ€๋ถ„์—์„œ๋Š” ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒƒ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ client ๋‹จ์—์„œ server ์ชฝ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” POST ํ†ต์‹ ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

post ๋ผ์šฐํ„ฐ๋„ ๊ฐ™์ด ์ž‘์„ฑํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.



routes/write.js

1
2
3
4
5
6
7
8
9
10
11
12
let express = require('express')
let router = express.Router()
let app = express();
let path = require('path')
app.set('views',path.join(__dirname,'views'));
app.set('view engine','pug')
 
router.get('/',function(req,res){
    res.render('write')
})
 
module.exports = router;
cs



routes/write_receive.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
let express = require('express')
let router = express.Router()
let app = express();
let path = require('path')
let board = require('../function/board')
let session = require('express-session')
app.set('views',path.join(__dirname,'views'));
app.set('view engine','pug')
app.use(session({
    secret:'123123123',
    resave:false,
    saveUninitialize:true
}));
 
router.post('/',function(req,res){
    board.boardWriteFunction(req.body.subject,req.body.content,req.session.idx,function(result){
        res.json(result)
    })    
})
 
module.exports = router;
cs


์ด์ „๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ POST ๋ฐฉ์‹์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. 


app.js

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
const createError = require('http-errors');
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const session = require('express-session')
const passport = require('passport')
const sequelize = require('sequelize')
const models = require('./models')
const app = express();
 
//app.get
const indexRouter = require('./routes/index');
const commuityRouter = require('./routes/commuity')
const writeRouter = require('./routes/write');
//app.post
const writeReceiveRouter = require('./routes/write_receive');
 
//sequelize
models.sequelize.sync()
    .then(function() {
    console.log('โœ“ DB connection success.');
      console.log('  Press CTRL-C to stop\n');
  })
  .catch(function(err) {
    console.error(err);
    console.log('โœ— DB connection error. Please make sure DB is running.');
    process.exit();
  });
 
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine''pug');
 
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.use(cookieParser())
app.use(session({
    secret:'123123123',
    resave:false,
    saveUninitialize:true
}));
app.use(express.static(__dirname));
 
//get
app.use('/', indexRouter);
app.use('/commuity',commuityRouter);
app.use('/write',writeRouter);
//post
app.use('/write_receive',writeReceiveRouter);
 
// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});
 
// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env'=== 'development' ? err : {};
 
  // render the error page
  res.status(err.status || 500);
  res.render('error');
});
module.exports = app;
 
cs


์›ฌ๋งŒํ•˜๋ฉด commuity ํŽ˜์ด์ง€์— ๊ธ€์“ฐ๊ธฐ ๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด์„œ ๊ธ€์“ฐ๊ธฐ ํŽ˜์ด์ง€๋กœ ๋„˜์–ด๊ฐ€๋ฉด ์ข‹๊ฒ ์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ์ข€ ๋งŽ์ด ๋ณ€ํ˜•๋˜์–ด๋ฒ„๋ ค์„œ ์ฃผ์†Œ๋ฅผ ์ง์ ‘ ํƒ€์ดํ•‘ํ•˜์—ฌ ๊ธ€์“ฐ๊ธฐ ํŽ˜์ด์ง€๋กœ ์ ‘๊ทผํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.



์ผ๋‹จ ์‹คํ–‰์„ ํ•œ ํ›„ localhost:3000/write ๋กœ ์ ‘๊ทผํ•˜๋ฉด ์ด๋Ÿฐ ํŽ˜์ด์ง€๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


submit ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด routes/write_receive.js ํŒŒ์ผ๋กœ ๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ํ…์ŠคํŠธ๋ฐ•์Šค์— ์ž‘์„ฑํ•œ ๋‚ด์šฉ์„ post ๋ผ์šฐํ„ฐ์— ๋„˜๊ฒจ์ฃผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  DB ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ํ•จ์ˆ˜ boardWriteFunction ์„ ์ž‘์„ฑํ•ด์ค๋‹ˆ๋‹ค.

๊ธฐ์กด์— ๊ฒŒ์‹œ๊ธ€์„ ๋กœ๋“œํ•˜๋Š” ํ•จ์ˆ˜์— ์ด์–ด์„œ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


function/board.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
let models = require('../models');
 
function boardWriteFunction(subject,content,fk_userId,callback){
    let responseData = {'result':'ok'}
    models.Board.create({
        subject:subject,
        content:content,
        fk_userId: fk_userId,
    }).then(function(result){
        callback(responseData)
    }).catch(function(err){
        console.log(err)
    })
}
 
exports.boardWriteFunction = boardWriteFunction;
cs


์ œ๋ชฉ๊ณผ ๋‚ด์šฉ์„ DB์— ์ €์žฅํ•ด์ค€ ํ›„์— ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ–ˆ๋˜ router์— responseData๋ฅผ ๋„˜๊ฒจ์ค๋‹ˆ๋‹ค. Ajax๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋ฌด์‚ฌํžˆ ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์ธ์„ ๋ณด๋‚ธ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.



๋ฌด์‚ฌํžˆ ์ „์†ก์ด ๋๋‹ค๋ฉด ์ด๋ ‡๊ฒŒ alert ์ฐฝ์ด ๋œจ๊ฒŒ ๋˜๊ณ  commuity ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•ด์ฃผ๋ฉด ํ•ด๋‹น ๋‚ด์šฉ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.



๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ