Showing
7 changed files
with
84 additions
and
46 deletions
1 | +/* | ||
2 | +bin - 이 폴더 안에는 www.js 파일이 잇으며 www.js는 http 서버를 구동시키는 로직이 들어있다. | ||
3 | + | ||
4 | +node_modules - 모듈들이 설치되는 공간 | ||
5 | + | ||
6 | +public - http 서버의 root 폴더고 stylesheets나 images 같은 데이터를 저장할 때 사용한다. | ||
7 | + | ||
8 | +routes - 라우팅을 해주는 역할, 주소를 입력했을 때 어디로 연결해 줄지 결정해주는 javaScript 파일들을 모아놓는 곳입니다. | ||
9 | + | ||
10 | +views - 웹 브라우져에 보여질 디자인을 작성하는 곳이다 | ||
11 | +*/ | ||
12 | + | ||
13 | +// http웹 서버 구조를 쉽게 만들 수 있도록 도와주는 프레임워크 | ||
1 | var express = require('express'); | 14 | var express = require('express'); |
15 | +var session = require('express-session'); | ||
16 | + | ||
17 | +// 폴더와 파일의 경로를 쉽게 조작하도록 도와주는 모듈, https://horajjan.blog.me/221337515650 | ||
2 | var path = require('path'); | 18 | var path = require('path'); |
19 | + | ||
20 | +// favorites icon의 약자로 웹페이지나 웹사이트를 대표하는 아이콘 | ||
3 | var favicon = require('serve-favicon'); | 21 | var favicon = require('serve-favicon'); |
22 | + | ||
23 | +// 웹 요청에 대해 로그를 출력하는 미들웨어, 외부 모듈이기 때문에 별도로 설치해서 사용 | ||
4 | var logger = require('morgan'); | 24 | var logger = require('morgan'); |
25 | + | ||
26 | +// 쿠키를 제어하는 모듈 | ||
5 | var cookieParser = require('cookie-parser'); | 27 | var cookieParser = require('cookie-parser'); |
28 | + | ||
29 | +// post 요청 데이터를 추출하는 미들웨어 | ||
6 | var bodyParser = require('body-parser'); | 30 | var bodyParser = require('body-parser'); |
7 | -var mysql = require('mysql'); | 31 | + |
32 | +// mysql과 연동을 위한 모듈 | ||
33 | +var mysql = require('mysql'); | ||
34 | + | ||
35 | +// JQuery를 서버사이드에 맞게 수정한 것 | ||
8 | var cheerio = require('cheerio'); | 36 | var cheerio = require('cheerio'); |
37 | + | ||
38 | +// 웹페이지 크롤링과 파씽을 위한 HTTP 클라이언트 라이브러리 | ||
9 | var request = require('request'); | 39 | var request = require('request'); |
40 | + | ||
41 | +// 로그인, 인증관련 미들웨어 | ||
42 | +var passport = require('passport'); | ||
43 | + | ||
10 | var index = require('./routes/index'); | 44 | var index = require('./routes/index'); |
11 | var users = require('./routes/users'); | 45 | var users = require('./routes/users'); |
12 | var mytoons = require('./routes/mytoons'); | 46 | var mytoons = require('./routes/mytoons'); |
13 | -var yourtoons=require('./routes/yourtoons'); | 47 | +var yourtoons =require('./routes/yourtoons'); |
14 | -var passport = require('passport'); | ||
15 | var setting = require('./routes/setting'); | 48 | var setting = require('./routes/setting'); |
16 | -var session = require('express-session'); | ||
17 | - | ||
18 | 49 | ||
19 | -//port | 50 | +// 최초 로그인 성공시 (Strategy 성공시) 단 한번만 호출 |
20 | passport.serializeUser(function(user, done) { | 51 | passport.serializeUser(function(user, done) { |
21 | console.log('serialized'); | 52 | console.log('serialized'); |
22 | done(null, user); | 53 | done(null, user); |
23 | }); | 54 | }); |
55 | + | ||
56 | +// 페이지 리로드마다 (서버로 들어오는 requset) 로그인한 사용자인지 조회 | ||
24 | passport.deserializeUser(function(user, done) { | 57 | passport.deserializeUser(function(user, done) { |
25 | console.log('deserialized'); | 58 | console.log('deserialized'); |
26 | done(null, user); | 59 | done(null, user); |
... | @@ -33,13 +66,14 @@ app.set('views', path.join(__dirname, 'views')); | ... | @@ -33,13 +66,14 @@ app.set('views', path.join(__dirname, 'views')); |
33 | app.set('view engine', 'ejs'); | 66 | app.set('view engine', 'ejs'); |
34 | 67 | ||
35 | // uncomment after placing your favicon in /public | 68 | // uncomment after placing your favicon in /public |
36 | -//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); | 69 | +// app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); |
37 | app.use(logger('dev')); | 70 | app.use(logger('dev')); |
38 | app.use(bodyParser.json()); | 71 | app.use(bodyParser.json()); |
39 | app.use(bodyParser.urlencoded({ extended: false })); | 72 | app.use(bodyParser.urlencoded({ extended: false })); |
40 | app.use(cookieParser()); | 73 | app.use(cookieParser()); |
41 | app.use(express.static(path.join(__dirname, 'public'))); | 74 | app.use(express.static(path.join(__dirname, 'public'))); |
42 | 75 | ||
76 | +// | ||
43 | connection = mysql.createConnection({ | 77 | connection = mysql.createConnection({ |
44 | host : 'localhost', | 78 | host : 'localhost', |
45 | user : 'root', | 79 | user : 'root', |
... | @@ -48,12 +82,14 @@ connection = mysql.createConnection({ | ... | @@ -48,12 +82,14 @@ connection = mysql.createConnection({ |
48 | database : 'YTMT' | 82 | database : 'YTMT' |
49 | }); | 83 | }); |
50 | 84 | ||
85 | +// | ||
51 | app.use(session({ | 86 | app.use(session({ |
52 | secret: 'secrettexthere', | 87 | secret: 'secrettexthere', |
53 | saveUninitialized: true, | 88 | saveUninitialized: true, |
54 | resave: true | 89 | resave: true |
55 | })); | 90 | })); |
56 | 91 | ||
92 | +//app.use(express.static('views')); | ||
57 | app.use(passport.initialize()); | 93 | app.use(passport.initialize()); |
58 | app.use(passport.session()); | 94 | app.use(passport.session()); |
59 | app.use('/', index); | 95 | app.use('/', index); |
... | @@ -61,9 +97,8 @@ app.use('/users', users); | ... | @@ -61,9 +97,8 @@ app.use('/users', users); |
61 | app.use('/mytoons', mytoons); | 97 | app.use('/mytoons', mytoons); |
62 | app.use('/setting', setting); | 98 | app.use('/setting', setting); |
63 | app.use('/yourtoons', yourtoons); | 99 | app.use('/yourtoons', yourtoons); |
64 | -//app.use(express.static('views')); | ||
65 | 100 | ||
66 | -// catch 404 and forward to error handler | 101 | +// catch 404 and forward to error handler, for wrong page |
67 | app.use(function(req, res, next) { | 102 | app.use(function(req, res, next) { |
68 | var err = new Error('Not Found'); | 103 | var err = new Error('Not Found'); |
69 | err.status = 404; | 104 | err.status = 404; |
... | @@ -81,5 +116,6 @@ app.use(function(err, req, res, next) { | ... | @@ -81,5 +116,6 @@ app.use(function(err, req, res, next) { |
81 | res.render('error'); | 116 | res.render('error'); |
82 | }); | 117 | }); |
83 | 118 | ||
119 | +// | ||
84 | var server = app.listen(3000); | 120 | var server = app.listen(3000); |
85 | module.exports = app; | 121 | module.exports = app; | ... | ... |
1 | #!/usr/bin/env node | 1 | #!/usr/bin/env node |
2 | 2 | ||
3 | +// www : http 서버를 구동시키는 logic | ||
4 | + | ||
3 | /** | 5 | /** |
4 | * Module dependencies. | 6 | * Module dependencies. |
5 | */ | 7 | */ |
... | @@ -12,7 +14,7 @@ var http = require('http'); | ... | @@ -12,7 +14,7 @@ var http = require('http'); |
12 | * Get port from environment and store in Express. | 14 | * Get port from environment and store in Express. |
13 | */ | 15 | */ |
14 | 16 | ||
15 | -var port = normalizePort(process.env.PORT || '9000'); | 17 | +var port = normalizePort(process.env.PORT || '3000'); |
16 | app.set('port', port); | 18 | app.set('port', port); |
17 | 19 | ||
18 | /** | 20 | /** | ... | ... |
This diff is collapsed. Click to expand it.
... | @@ -2,47 +2,47 @@ var express = require('express'); | ... | @@ -2,47 +2,47 @@ var express = require('express'); |
2 | var router = express.Router(); | 2 | var router = express.Router(); |
3 | 3 | ||
4 | function addMyToons(id,index,cb){ | 4 | function addMyToons(id,index,cb){ |
5 | - connection.query("INSERT INTO user_toon_relation SET ?;", | 5 | + connection.query("INSERT INTO user_toon_relation SET ?;", {user_id : id,toon_index : index},function (err) { |
6 | - {user_id : id,toon_index : index},function (err) { | 6 | + |
7 | - if(err) { | 7 | + if(err) { |
8 | - throw err; | 8 | + throw err; |
9 | - console.log("내 웹툰 추가중 에러!") | 9 | + console.log("내 웹툰 추가 중 에러!") |
10 | - } else{ | 10 | + } else{ |
11 | - // alert("추가되었습니다.") | 11 | + // alert("추가되었습니다.") |
12 | - cb(); | 12 | + cb(); |
13 | - } | 13 | + } |
14 | - }); | 14 | + }); |
15 | } | 15 | } |
16 | + | ||
16 | //내툰 수정하기 | 17 | //내툰 수정하기 |
17 | router.post('/toggle_toon',function(req,res,next){ | 18 | router.post('/toggle_toon',function(req,res,next){ |
18 | var index = req.body.toon_index; | 19 | var index = req.body.toon_index; |
19 | var id = req.user.user_id; | 20 | var id = req.user.user_id; |
20 | - connection.query("SELECT COUNT(*) FROM user_toon_relation WHERE user_id='"+id+"' && toon_index='"+index+"'", | 21 | + connection.query("SELECT COUNT(*) FROM user_toon_relation WHERE user_id='"+id+"' && toon_index='"+index+"'", [id,index], function (err, rows,result) { |
21 | - [id,index], function (err, rows,result) { | 22 | + if(err) { |
22 | - if(err){ | 23 | + console.log("내 웹툰 등록 중 에러!"); |
23 | - console.log("내웹툰 등록중 에러!"); | 24 | + } else { |
24 | - }else{ | 25 | + var count = rows[0]["COUNT(*)"]; |
25 | - var count = rows[0]["COUNT(*)"]; | 26 | + if(count>0) {//이미 등록되어 있는 것이라면, |
26 | - if(count>0){//이미 등록되어 있는 것이라면, | 27 | + connection.query("DELETE FROM user_toon_relation WHERE user_id='"+id+"' && toon_index='"+index+"';", [id, index],function (err, rows, result) { |
27 | - connection.query("DELETE FROM user_toon_relation WHERE user_id='"+id+"' && toon_index='"+index+"';", | 28 | + if(err) { |
28 | - [id, index],function (err, rows, result) { | 29 | + console.log("내 웹툰 제거중 에러!"); |
29 | - if(err) { | 30 | + throw err; |
30 | - console.log("내 웹툰 제거중 에러!"); | 31 | + } else { |
31 | - throw err; | 32 | + //alert("제거되었습니다.") |
32 | - }else{ | ||
33 | - // alert("제거되었습니다.") | ||
34 | - res.redirect('/setting'); | ||
35 | - } | ||
36 | - }); | ||
37 | - }else{ | ||
38 | - addMyToons(id,index,function(){ | ||
39 | res.redirect('/setting'); | 33 | res.redirect('/setting'); |
40 | - }); | 34 | + } |
41 | - } | 35 | + }); |
36 | + } else { | ||
37 | + addMyToons(id,index,function(){ | ||
38 | + res.redirect('/setting'); | ||
39 | + }); | ||
42 | } | 40 | } |
43 | - }); | 41 | + } |
42 | + }); | ||
44 | }); | 43 | }); |
45 | 44 | ||
45 | +// | ||
46 | function getMyToons(id,cb){ | 46 | function getMyToons(id,cb){ |
47 | //mysql5.7 syntax에 맞게 수정 => 로그인한 유저의 | 47 | //mysql5.7 syntax에 맞게 수정 => 로그인한 유저의 |
48 | var sqlquery = "SELECT t.toon_index, t.name, t.thum_link, t.webtoon_link, t.week, t.site FROM user u, user_toon_relation ur, toon t WHERE u.id = '"+id+"' && u.id=ur.user_id && t.toon_index=ur.toon_index;"; | 48 | var sqlquery = "SELECT t.toon_index, t.name, t.thum_link, t.webtoon_link, t.week, t.site FROM user u, user_toon_relation ur, toon t WHERE u.id = '"+id+"' && u.id=ur.user_id && t.toon_index=ur.toon_index;"; |
... | @@ -68,4 +68,4 @@ router.get('/', function(req, res, next) { | ... | @@ -68,4 +68,4 @@ router.get('/', function(req, res, next) { |
68 | }) | 68 | }) |
69 | }); | 69 | }); |
70 | 70 | ||
71 | -module.exports = router; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
71 | +module.exports = router; | ... | ... |
... | @@ -3,7 +3,7 @@ var router = express.Router(); | ... | @@ -3,7 +3,7 @@ var router = express.Router(); |
3 | 3 | ||
4 | /* GET users listing. */ | 4 | /* GET users listing. */ |
5 | router.get('/', function(req, res, next) { | 5 | router.get('/', function(req, res, next) { |
6 | - res.send('respond with a resource'); | 6 | + res.send('respond with a resource'); |
7 | }); | 7 | }); |
8 | 8 | ||
9 | module.exports = router; | 9 | module.exports = router; | ... | ... |
-
Please register or login to post a comment