javascript/node.js 웹애플리케이션 제작
-
[Node.js] 자바스크립트 데이터베이스 연동 - 웹애플리케이션 6javascript/node.js 웹애플리케이션 제작 2024. 7. 13. 14:31
이번에는 삭제버튼을 만들어볼 것이다.edit버튼과 마찬가지로 특정 글이 선택되었을 때에만 출력하려고한다. if topic li a(href='/topic/'+topic.id+'/edit') edit li a(href='/topic/' + topic.id + '/delete') deleteif문 조건 안에 있는 edit버튼 아래에 delete버튼을 추가했다.이 상태에서 delete버튼을 누르면 Cannot GET /topic/id/delete 에러메시지가 날 것이다.우리는 이에 해당하는 라우팅을 또 해줘야한다. app.get('/topic/:id/delete', function (r..
-
[Node.js] 자바스크립트 데이터베이스 연동 - 웹애플리케이션 4javascript/node.js 웹애플리케이션 제작 2024. 7. 13. 14:24
이번 포스팅의 개요는 사용자가 topic/:id/edit 경로로 접근하면 edit.pug 파일을 열어서 화면에 표시해주고, 수정작업이 끝난 다음 전송을 누르면 똑같은 주소로 POST방식으로 전송이 될 것이다.수정이 끝나면 redirect를 시켜서 topic의 id값으로 가서 사용자에게 수정이 잘 끝났다라는 것을 암시적으로 보여줄 수 있는 코드를 만들 것이다.또한 사용자가 특정 title을 선택했을 때에만 edit 버튼이 보이게 하고 싶다.(홈으로 갔을 때에는 edit버튼이 사라지는 기능도 포함)첫번째로, add버튼 옆에 edit버튼을 생성해야한다.ul li a(href='/topic/add') add if topic ..
-
[Node.js] 자바스크립트 데이터베이스 연동 - 웹애플리케이션 3javascript/node.js 웹애플리케이션 제작 2024. 7. 13. 14:22
이번에는 글을 추가하는 기능을 포스팅할 것이다.localhost:7777/topic/add로 접근시 add.pug을 이용해 글을 작성할 수 있는 폼을 만들 것이다.views_mysql 디렉토리 내에 add.pug 파일을 만든다.그리고 기존에 사용하였던 new부분을 add로 다음과 같이 변경하였다.(추가로 view.pug 파일 내에 있는 new도 add로 바꿔줘야한다.)app.get('/topic/add', function (req, res) { fs.readdir('data', function (err, files) { if (err) { console.log(err); res.status(500).send('Internal Server Error..
-
[Node.js] 자바스크립트 데이터베이스 연동 - 웹애플리케이션 2javascript/node.js 웹애플리케이션 제작 2024. 7. 13. 14:20
이번 포스팅에서는 글 상세보기 기능을 구현해볼 것이다. conn.query(sql, function (err, topics, fields) { res.render('view', {topics: topics}); });부분을 아래와 같이 수정했다. conn.query(sql, function (err, topics, fields) { var id = req.params.id; if (id) { var sql = 'SELECT * FROM topic WHERE id=?'; conn.query(sql, [id], function (err, topic, fields) { if (err) { ..
-
[Node.js] 자바스크립트 데이터베이스 연동 - 웹애플리케이션 1javascript/node.js 웹애플리케이션 제작 2024. 7. 13. 14:16
var express = require('express');var bodyParser = require('body-parser');var multer = require('multer');var _storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/') }, filename: function (req, file, cb) { cb(null, file.originalname); }})var upload = multer({storage: _storage});var fs = require('fs');var app = express();app.use(bodyPar..
-
[Node.js] 웹애플리케이션 제작 - 4 파일 업로드javascript/node.js 웹애플리케이션 제작 2024. 7. 9. 22:56
multer : Express를 이용해서 사용자가 전송한 데이터 파일을 어딘가에 저장하는데에 최적화된 모듈 npm install --save multer이 multer를 사용하기 위해서는 따로 설치가 필요하다. var multer = require('multer');multer모듈을 사용하기 위해 변수를 선언한다. app.get('/upload', function (req, res) { res.render('upload');});다음과 같이 프레임을 만들어주고 views 디렉토리 내에 upload.pug 파일을 생성해준다. doctype htmlhtml head meta(charset='utf-8') body form(action='upload' meth..
-
[Node.js] 웹애플리케이션 제작 - 3 코드 개선javascript/node.js 웹애플리케이션 제작 2024. 7. 9. 22:50
앞전에 작성한 코드들을 더 깔끔하게 정리하고자한다. 중복 및 불필요한 코드를 제거할 것이다.코드를 개선 및 정리하면 좋은 점은 가독성뿐만 아니라 코드의 유지보수 측면에서도 매우 편리하다. app.get(['/topic', '/topic/:id'], function (req, res) { fs.readdir('data', function (err, files) { if (err) { console.log(err); res.status(500).send('Internal Server Error'); } res.render('view', {topics: files}); })});배열을 이용해 라우터의 경로를 2개를 설정함으..
-
[Node.js] 웹애플리케이션 제작 - 2javascript/node.js 웹애플리케이션 제작 2024. 7. 9. 22:38
출력을 하기 위해서 우리는 라우터를 만들어줘야한다./topic이라는 라우터가 있는데 왜 만들어야할까에 대해 의문을 가질 수 있다.이유는 사용자가 url상으로 입력해서 들어오는 방식은 POST 방식이 아닌 GET 방식이기 때문이다.그래서 GET 방식의 /topic을 한 개 더 만들어줘야하는 것이다. app.get('/topic', function (req, res) { });우선 다음과 같이 프레임을 만들어준다. fs.readdir('data', function (err, files) { if (err) { console.log(err); res.status(500).send('Internal Server Error'); } ..