hyunjong

프로젝트 진행하기 전 코드를 위해하기위한 주석달기

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 /**
......
1 var express = require('express'); 1 var express = require('express');
2 var cheerio = require('cheerio'); 2 var cheerio = require('cheerio');
3 var request = require('request'); 3 var request = require('request');
4 -var router = express.Router(); 4 +var mysql = require('mysql');
5 -var mysql = require('mysql'); 5 +
6 +// 설명
6 var client = require('cheerio-httpcli'); 7 var client = require('cheerio-httpcli');
7 -var passport = require('passport'), 8 +var passport = require('passport'), KakaoStrategy = require('passport-kakao').Strategy;
8 - KakaoStrategy = require('passport-kakao').Strategy; 9 +var router = express.Router();
9 10
11 +// 설명
10 passport.use(new KakaoStrategy({ 12 passport.use(new KakaoStrategy({
13 +
11 clientID : 'bd2e610396fb7bbb84cf91a786b3cc72', 14 clientID : 'bd2e610396fb7bbb84cf91a786b3cc72',
12 callbackURL :'/auth/login/kakao/callback', 15 callbackURL :'/auth/login/kakao/callback',
13 - clientSecret : 'eUtJGtlLoCZJufevp3LKfDP0KOtZUV7R' 16 + clientSecret : 'eUtJGtlLoCZJufevp3LKfDP0KOtZUV7R'
14 - }, 17 +
15 - function(accessToken, refreshToken,params, profile, done){ 18 + }, function(accessToken, refreshToken,params, profile, done){
16 - //사용자 정보는 profile에
17 - loginByThirdparty(accessToken, refreshToken, profile);
18 19
20 + //사용자 정보 -> profile
21 + loginByThirdparty(accessToken, refreshToken, profile);
19 console.log("(!)로그인 : " + profile._json.id+"("+profile._json.properties.nickname +")"); 22 console.log("(!)로그인 : " + profile._json.id+"("+profile._json.properties.nickname +")");
23 +
20 //return done(null,profile) 24 //return done(null,profile)
21 return done(null, { 25 return done(null, {
22 'user_id': profile._json.id, 26 'user_id': profile._json.id,
23 'nickname': profile._json.properties.nickname 27 'nickname': profile._json.properties.nickname
28 +
24 }); 29 });
25 } 30 }
26 )); 31 ));
27 32
28 -// kakao 로그인 33 +// kakao 로그인, // passport.authenticate('kakao',{state: "myStateValue"})
29 -router.get('/auth/login/kakao', 34 +router.get('/auth/login/kakao', passport.authenticate('kakao'));
30 - // passport.authenticate('kakao',{state: "myStateValue"})
31 - passport.authenticate('kakao')
32 -);
33 35
34 // kakao 로그인 연동 콜백 36 // kakao 로그인 연동 콜백
35 -router.get('/auth/login/kakao/callback', 37 +router.get('/auth/login/kakao/callback', passport.authenticate('kakao', {
36 - passport.authenticate('kakao', { 38 +
37 - //session: false, 39 + //session: false,
38 - successRedirect: '/mytoons', 40 + successRedirect: '/mytoons',
39 - failureRedirect: '/' 41 + failureRedirect: '/'
40 }) 42 })
41 ); 43 );
42 44
45 +// 설명
43 function loginByThirdparty(accessToken, refreshToken, profile) { 46 function loginByThirdparty(accessToken, refreshToken, profile) {
44 - //예전 코드는 MySQL 버젼이 맞지 않음 47 + // 예전 코드는 MySQL 버젼이 맞지 않음
45 - // var sql = 'INSERT INTO `user`(id) VALUES(?) ON DUPLICATE KEY(PRIMARY) UPDATE id=(?);' 48 + // var sql = 'INSERT INTO `user`(id) VALUES(?) ON DUPLICATE KEY(PRIMARY) UPDATE id=(?);'
46 var sql = "INSERT INTO `user` (id) VALUES (?) ON DUPLICATE KEY UPDATE id=id"; 49 var sql = "INSERT INTO `user` (id) VALUES (?) ON DUPLICATE KEY UPDATE id=id";
47 var kid=[profile._json.id]; 50 var kid=[profile._json.id];
48 connection.query(sql,kid,function(err,result){ 51 connection.query(sql,kid,function(err,result){
...@@ -54,50 +57,64 @@ function loginByThirdparty(accessToken, refreshToken, profile) { ...@@ -54,50 +57,64 @@ function loginByThirdparty(accessToken, refreshToken, profile) {
54 }); 57 });
55 } 58 }
56 59
60 +// 설명
57 router.get('/auth/logout/kakao',function (req,res) { 61 router.get('/auth/logout/kakao',function (req,res) {
58 req.logout(); 62 req.logout();
59 res.redirect('/'); 63 res.redirect('/');
60 }) 64 })
61 65
62 -allWebtoons = new Array(); 66 +//
63 -
64 function getLatestToon(titleid, day ,cb) { 67 function getLatestToon(titleid, day ,cb) {
68 +
65 } 69 }
66 70
71 +// 설명
72 +allWebtoons = new Array();
73 +
74 +// 설명
67 function getAllToons() { 75 function getAllToons() {
76 +
68 allWebtoonList = new Array(); 77 allWebtoonList = new Array();
69 -//월요일 다음 웹툰
70 - var mon='mon';
71 - var mon_name='MON';
72 - var daum = `http://webtoon.daum.net/data/pc/webtoon/list_serialized/${mon}?timeStamp=1515819276574`;
73 - var site = 'daum';
74 - client.fetch(daum, {}, function (err, $, res, body) {
75 - var data = JSON.parse(body);
76 - var list = data["data"];
77 - list.forEach(function (item, idx) {
78 - var webtoon_link = 'http://webtoon.daum.net/webtoon/view/' + item.nickname.toString();
79 - var webtoon = {
80 - toon_index: item.id,
81 - name: item.title,
82 - thum_link: item.pcThumbnailImage.url,
83 - webtoon_link: webtoon_link,
84 - week :mon_name,
85 - site: site,
86 - latest: 0
87 - };
88 - allWebtoonList.push(webtoon);
89 - });
90 78
79 + //월요일 다음 웹툰
80 + var mon='mon';
81 + var mon_name='MON';
82 + var daum = `http://webtoon.daum.net/data/pc/webtoon/list_serialized/${mon}?timeStamp=1515819276574`;
83 + var site = 'daum';
84 +
85 + client.fetch(daum, {}, function (err, $, res, body) {
86 +
87 + var data = JSON.parse(body);
88 + var list = data["data"];
89 +
90 + list.forEach(function (item, idx) {
91 +
92 + var webtoon_link = 'http://webtoon.daum.net/webtoon/view/' + item.nickname.toString();
93 + var webtoon = {
94 + toon_index: item.id,
95 + name: item.title,
96 + thum_link: item.pcThumbnailImage.url,
97 + webtoon_link: webtoon_link,
98 + week :mon_name,
99 + site: site,
100 + latest: 0
101 + };
102 +
103 + allWebtoonList.push(webtoon);
91 }); 104 });
105 + });
92 106
93 -//화요일 다음 웹툰 107 + //화요일 다음 웹툰
94 var tue='tue'; 108 var tue='tue';
95 var tue_name='TUE'; 109 var tue_name='TUE';
96 var daum1 = `http://webtoon.daum.net/data/pc/webtoon/list_serialized/${tue}?timeStamp=1515819276574`; 110 var daum1 = `http://webtoon.daum.net/data/pc/webtoon/list_serialized/${tue}?timeStamp=1515819276574`;
111 +
97 client.fetch(daum1, {}, function (err, $, res, body) { 112 client.fetch(daum1, {}, function (err, $, res, body) {
98 var data = JSON.parse(body); 113 var data = JSON.parse(body);
99 var list = data["data"]; 114 var list = data["data"];
115 +
100 list.forEach(function(item, idx){ 116 list.forEach(function(item, idx){
117 +
101 var webtoon_link='http://webtoon.daum.net/webtoon/view/'+item.nickname.toString(); 118 var webtoon_link='http://webtoon.daum.net/webtoon/view/'+item.nickname.toString();
102 var webtoon= { 119 var webtoon= {
103 toon_index: item.id, 120 toon_index: item.id,
...@@ -108,17 +125,18 @@ function getAllToons() { ...@@ -108,17 +125,18 @@ function getAllToons() {
108 site : site, 125 site : site,
109 latest : 0 126 latest : 0
110 }; 127 };
111 - allWebtoonList.push(webtoon);
112 - });
113 128
129 + allWebtoonList.push(webtoon);
130 + });
114 }); 131 });
115 132
116 -//수요일 다음 웹툰 133 + //수요일 다음 웹툰
117 var wed='wed'; 134 var wed='wed';
118 var wed_name='WED'; 135 var wed_name='WED';
119 var daum2 = `http://webtoon.daum.net/data/pc/webtoon/list_serialized/${wed}?timeStamp=1515819276574`; 136 var daum2 = `http://webtoon.daum.net/data/pc/webtoon/list_serialized/${wed}?timeStamp=1515819276574`;
120 137
121 client.fetch(daum2, {}, function (err, $, res, body) { 138 client.fetch(daum2, {}, function (err, $, res, body) {
139 +
122 var data = JSON.parse(body); 140 var data = JSON.parse(body);
123 var list = data["data"]; 141 var list = data["data"];
124 142
...@@ -134,19 +152,23 @@ function getAllToons() { ...@@ -134,19 +152,23 @@ function getAllToons() {
134 site : site, 152 site : site,
135 latest : 0 153 latest : 0
136 }; 154 };
137 - allWebtoonList.push(webtoon);
138 - });
139 155
156 + allWebtoonList.push(webtoon);
157 + });
140 }); 158 });
141 159
142 -//목요일 다음 웹툰 160 + //목요일 다음 웹툰
143 var thu='thu'; 161 var thu='thu';
144 var daum3 =`http://webtoon.daum.net/data/pc/webtoon/list_serialized/${thu}?timeStamp=1515819276574`; 162 var daum3 =`http://webtoon.daum.net/data/pc/webtoon/list_serialized/${thu}?timeStamp=1515819276574`;
145 var thu_name='THU'; 163 var thu_name='THU';
164 +
146 client.fetch(daum3, {}, function (err, $, res, body) { 165 client.fetch(daum3, {}, function (err, $, res, body) {
166 +
147 var data = JSON.parse(body); 167 var data = JSON.parse(body);
148 var list = data["data"]; 168 var list = data["data"];
169 +
149 list.forEach(function(item, idx){ 170 list.forEach(function(item, idx){
171 +
150 var webtoon_link='http://webtoon.daum.net/webtoon/view/'+item.nickname.toString(); 172 var webtoon_link='http://webtoon.daum.net/webtoon/view/'+item.nickname.toString();
151 var webtoon= { 173 var webtoon= {
152 toon_index: item.id, 174 toon_index: item.id,
...@@ -157,12 +179,13 @@ function getAllToons() { ...@@ -157,12 +179,13 @@ function getAllToons() {
157 site : site, 179 site : site,
158 latest : 0 180 latest : 0
159 }; 181 };
182 +
160 allWebtoonList.push(webtoon); 183 allWebtoonList.push(webtoon);
161 }); 184 });
162 185
163 }); 186 });
164 187
165 -//금요일 다음 웹툰 188 + //금요일 다음 웹툰
166 var fri='fri'; 189 var fri='fri';
167 var daum4 =`http://webtoon.daum.net/data/pc/webtoon/list_serialized/${fri}?timeStamp=1515819276574`; 190 var daum4 =`http://webtoon.daum.net/data/pc/webtoon/list_serialized/${fri}?timeStamp=1515819276574`;
168 var fri_name='FRI'; 191 var fri_name='FRI';
...@@ -185,7 +208,7 @@ function getAllToons() { ...@@ -185,7 +208,7 @@ function getAllToons() {
185 208
186 }); 209 });
187 210
188 -//토요일 다음 웹툰 211 + //토요일 다음 웹툰
189 var sat='sat'; 212 var sat='sat';
190 var daum5 =`http://webtoon.daum.net/data/pc/webtoon/list_serialized/${sat}?timeStamp=1515819276574`; 213 var daum5 =`http://webtoon.daum.net/data/pc/webtoon/list_serialized/${sat}?timeStamp=1515819276574`;
191 var sat_name='SAT'; 214 var sat_name='SAT';
...@@ -208,7 +231,7 @@ function getAllToons() { ...@@ -208,7 +231,7 @@ function getAllToons() {
208 231
209 }); 232 });
210 233
211 -//일요일 다음 웹툰 234 + //일요일 다음 웹툰
212 var sun='sun'; 235 var sun='sun';
213 var daum6 = `http://webtoon.daum.net/data/pc/webtoon/list_serialized/${sun}?timeStamp=1515819276574`; 236 var daum6 = `http://webtoon.daum.net/data/pc/webtoon/list_serialized/${sun}?timeStamp=1515819276574`;
214 var sun_name='SUN'; 237 var sun_name='SUN';
...@@ -216,7 +239,6 @@ function getAllToons() { ...@@ -216,7 +239,6 @@ function getAllToons() {
216 var data = JSON.parse(body); 239 var data = JSON.parse(body);
217 var list = data["data"]; 240 var list = data["data"];
218 list.forEach(function(item, idx){ 241 list.forEach(function(item, idx){
219 - //다음 웹툰 아이디, 제목, 요일
220 var webtoon_link='http://webtoon.daum.net/webtoon/view/'+item.nickname.toString(); 242 var webtoon_link='http://webtoon.daum.net/webtoon/view/'+item.nickname.toString();
221 var webtoon= { 243 var webtoon= {
222 toon_index: item.id, 244 toon_index: item.id,
...@@ -231,7 +253,7 @@ function getAllToons() { ...@@ -231,7 +253,7 @@ function getAllToons() {
231 }); 253 });
232 }); 254 });
233 255
234 -//네이버 웹툰 256 + //네이버 웹툰
235 var allWeeklyToonsUrl = "http://comic.naver.com/webtoon/weekday.nhn"; 257 var allWeeklyToonsUrl = "http://comic.naver.com/webtoon/weekday.nhn";
236 request(allWeeklyToonsUrl,function (err, res, html) { 258 request(allWeeklyToonsUrl,function (err, res, html) {
237 if(!err){ 259 if(!err){
...@@ -255,19 +277,20 @@ function getAllToons() { ...@@ -255,19 +277,20 @@ function getAllToons() {
255 }; 277 };
256 allWebtoonList.push(webtoon); 278 allWebtoonList.push(webtoon);
257 }); 279 });
280 +
258 p.then(function() { 281 p.then(function() {
259 i = 0; 282 i = 0;
260 allWebtoonList.forEach(function (webtoon) { 283 allWebtoonList.forEach(function (webtoon) {
261 - var sql= "INSERT INTO `toon` (toon_index, name, thum_link, webtoon_link, week, site, latest) VALUES(?) ON DUPLICATE KEY UPDATE latest=latest"; 284 + var sql= "INSERT INTO `toon` (toon_index, name, thum_link, webtoon_link, week, site, latest) VALUES(?) ON DUPLICATE KEY UPDATE latest=latest";
262 - var values=[webtoon.toon_index, webtoon.name, webtoon.thum_link, webtoon.webtoon_link,webtoon.week, webtoon.site, webtoon.latest]; 285 + var values=[webtoon.toon_index, webtoon.name, webtoon.thum_link, webtoon.webtoon_link,webtoon.week, webtoon.site, webtoon.latest];
263 - connection.query(sql,[values],function(err,result){ 286 +
264 - if (err) { 287 + connection.query(sql,[values],function(err,result){
265 - console.log("웹툰 DB 에러 : " + err); 288 + if (err) {
266 - } else { 289 + console.log("웹툰 DB 에러 : " + err);
267 - // console.log("웹툰 DB처리 완료!"); 290 + } else {
268 - } 291 + console.log("웹툰 DB처리 완료!");
269 - }); 292 + }
270 - //}); 293 + });
271 }) 294 })
272 }); 295 });
273 } 296 }
...@@ -275,24 +298,25 @@ function getAllToons() { ...@@ -275,24 +298,25 @@ function getAllToons() {
275 allWebtoons = allWebtoonList; 298 allWebtoons = allWebtoonList;
276 }; 299 };
277 300
278 -getAllToons();
279 //처음 한번 수행 301 //처음 한번 수행
280 -setInterval(getAllToons,5*60*1000); 302 +getAllToons();
303 +
281 //5분에 한번 수행 304 //5분에 한번 수행
305 +setInterval(getAllToons,5*60*1000);
282 306
283 /* GET home page. */ 307 /* GET home page. */
284 -router.get('/', 308 +router.get('/', function(req,res,next) {
285 - function(req,res,next){ 309 +
286 - if(req.isAuthenticated()){ 310 + if(req.isAuthenticated()) {
287 - res.redirect('/mytoons'); 311 + res.redirect('/mytoons');
288 - console.log("(!)이미 로그인"); 312 + console.log("(!)Already logined");
289 - }else{ 313 + } else {
290 - console.log("(!)로그인세션 없음"); 314 + console.log("(!)로그인세션 없음");
291 - res.render('index',{ 315 + res.render('index',{
292 - title: "니툰내툰", 316 + title: "니툰내툰",
293 - list: allWebtoons 317 + list: allWebtoons
294 - }); 318 + });
295 - } 319 + }
296 - }); 320 +});
297 321
298 module.exports = router; 322 module.exports = router;
......
...@@ -40,4 +40,4 @@ router.get('/', function(req, res, next) { ...@@ -40,4 +40,4 @@ router.get('/', function(req, res, next) {
40 } 40 }
41 }); 41 });
42 42
43 -module.exports = router;
...\ No newline at end of file ...\ No newline at end of file
43 +module.exports = router;
......
...@@ -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;
......
...@@ -40,4 +40,4 @@ router.get('/', function(req, res, next) { ...@@ -40,4 +40,4 @@ router.get('/', function(req, res, next) {
40 } 40 }
41 }); 41 });
42 42
43 -module.exports = router;
...\ No newline at end of file ...\ No newline at end of file
43 +module.exports = router;
......