κ²μν κΈ μμ±νκΈ°
κ²μνμ κΈμ μ°λ μμ λ μ΄μ΄μ μ§νν΄λ³΄λλ‘ νκ² μ΅λλ€. κ²μκΈμ μ΄λ€λ κ²μ 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 νμ΄μ§λ₯Ό λ‘λν΄μ£Όλ©΄ ν΄λΉ λ΄μ©μ΄ μΆκ°λ©λλ€.