김대철

카페 후기정보 등록 API 작성

index.js comment 정보 입력 후 테이블 저장 구현
1 var express = require("express"); 1 var express = require("express");
2 var router = express.Router(); 2 var router = express.Router();
3 3
4 -var request = require("request");
5 var bodyParser = require("body-parser"); 4 var bodyParser = require("body-parser");
6 5
7 var { OAuth2Client } = require("google-auth-library"); 6 var { OAuth2Client } = require("google-auth-library");
8 -var querystring = require("querystring");
9 7
10 var CLIENT_ID = 8 var CLIENT_ID =
11 "94679084723-s5f0686p2porp9mkakrp1p89a48n24nj.apps.googleusercontent.com"; 9 "94679084723-s5f0686p2porp9mkakrp1p89a48n24nj.apps.googleusercontent.com";
...@@ -13,15 +11,18 @@ var client = new OAuth2Client(CLIENT_ID); ...@@ -13,15 +11,18 @@ var client = new OAuth2Client(CLIENT_ID);
13 var mysql = require("mysql"); 11 var mysql = require("mysql");
14 var session = require("express-session"); 12 var session = require("express-session");
15 var FileStore = require("session-file-store")(session); 13 var FileStore = require("session-file-store")(session);
14 +
16 router.use(bodyParser.urlencoded({ extended: false })); //url인코딩 x 15 router.use(bodyParser.urlencoded({ extended: false })); //url인코딩 x
17 -router.use(bodyParser.json()); //json방식으로 파 16 +router.use(bodyParser.json()); //json방식으로 파
18 router.use( 17 router.use(
19 session({ 18 session({
20 secret: "209", // 암호화 19 secret: "209", // 암호화
21 resave: false, 20 resave: false,
22 saveUninitialized: true, 21 saveUninitialized: true,
23 store: new FileStore(), 22 store: new FileStore(),
24 - })) 23 + })
24 +);
25 +
25 var connection = mysql.createConnection({ 26 var connection = mysql.createConnection({
26 host: "localhost", 27 host: "localhost",
27 user: "root", 28 user: "root",
...@@ -29,6 +30,7 @@ var connection = mysql.createConnection({ ...@@ -29,6 +30,7 @@ var connection = mysql.createConnection({
29 database: "caferecommend", 30 database: "caferecommend",
30 }); 31 });
31 connection.connect(); 32 connection.connect();
33 +
32 /* GET home page. */ 34 /* GET home page. */
33 router.get("/", function (req, res, next) { 35 router.get("/", function (req, res, next) {
34 res.render("index", { 36 res.render("index", {
...@@ -49,7 +51,7 @@ router.post("/index", (req, res) => { ...@@ -49,7 +51,7 @@ router.post("/index", (req, res) => {
49 audience: CLIENT_ID, // Specify the CLIENT_ID of the app that accesses the backend 51 audience: CLIENT_ID, // Specify the CLIENT_ID of the app that accesses the backend
50 }); 52 });
51 const payload = ticket.getPayload(); 53 const payload = ticket.getPayload();
52 - const userid = payload['sub'] 54 + const userid = payload["sub"];
53 } 55 }
54 verify() 56 verify()
55 .then(() => { 57 .then(() => {
...@@ -61,7 +63,7 @@ router.post("/index", (req, res) => { ...@@ -61,7 +63,7 @@ router.post("/index", (req, res) => {
61 63
62 router.get("/login", checkAuthenticated, (req, res) => { 64 router.get("/login", checkAuthenticated, (req, res) => {
63 let user = req.user; 65 let user = req.user;
64 - req.session.user=user; 66 + req.session.user = user;
65 var sql = "SELECT * FROM USER WHERE EMAIL=?"; 67 var sql = "SELECT * FROM USER WHERE EMAIL=?";
66 var parameter = [req.session.user.email]; 68 var parameter = [req.session.user.email];
67 connection.query(sql, parameter, function (err, row) { 69 connection.query(sql, parameter, function (err, row) {
...@@ -111,7 +113,7 @@ router.post("/login", (req, res) => { ...@@ -111,7 +113,7 @@ router.post("/login", (req, res) => {
111 req.session.user.age, 113 req.session.user.age,
112 req.session.user.gender, 114 req.session.user.gender,
113 ]; 115 ];
114 - connection.query(sql, parameter, function (err, row) { 116 + connection.query(sql, parameter, function (err) {
115 if (err) { 117 if (err) {
116 console.log(err); 118 console.log(err);
117 } else { 119 } else {
...@@ -123,8 +125,6 @@ router.post("/login", (req, res) => { ...@@ -123,8 +125,6 @@ router.post("/login", (req, res) => {
123 }); 125 });
124 }); 126 });
125 127
126 -module.exports = router;
127 -
128 function checkAuthenticated(req, res, next) { 128 function checkAuthenticated(req, res, next) {
129 let token = req.cookies["session-token"]; 129 let token = req.cookies["session-token"];
130 let user = {}; 130 let user = {};
...@@ -158,3 +158,34 @@ router.get("/logout", function (req, res) { ...@@ -158,3 +158,34 @@ router.get("/logout", function (req, res) {
158 req.session.destroy(); //세션비우기 158 req.session.destroy(); //세션비우기
159 res.redirect("/"); 159 res.redirect("/");
160 }); 160 });
161 +
162 +// 카페 후기 등록
163 +router.post("/comment", function (req, res) {
164 + var cafeId = req.body.cafeId;
165 + var price = req.body.price;
166 + var kindness = req.body.kindness;
167 + var noise = req.body.noise;
168 + var accessibility = req.body.accessibility;
169 +
170 + // 입력받지 않은 데이터가 하나라도 존재 (카페아이디는 후기작성시 자동으로 받아옴)
171 + if (!price || !kindness || !noise || !accessibility) {
172 + console.log("입력받지 않은 데이터 존재");
173 + return; // 후기작성으로 다시 이동
174 + }
175 +
176 + var sql =
177 + "INSERT INTO COMMENT(CAFE_ID, PRICE, KINDNESS, NOISE, ACCESSIBILITY) VALUES(?,?,?,?,?)";
178 +
179 + var parameter = [cafeId, price, kindness, noise, accessibility];
180 +
181 + connection.query(sql, parameter, function (err) {
182 + if (err) {
183 + console.log(err);
184 + } else {
185 + console.log("새로운 comment 데이터 입력");
186 + }
187 + });
188 + return res.render("map");
189 +});
190 +
191 +module.exports = router;
......
1 +{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"__lastAccess":1621766908867,"user":{"name":"‍김대철[학생](소프트웨어융합대학 컴퓨터공학과)","email":"kdc9619@khu.ac.kr","nickname":"Meerkat","age":"26","gender":"male"}}
...\ No newline at end of file ...\ No newline at end of file
1 +{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"__lastAccess":1621952163379}
...\ No newline at end of file ...\ No newline at end of file
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <html>
3 -<head> 3 + <head>
4 - <link rel="stylesheet" href="stylesheets/bootstrap.css"> 4 + <link rel="stylesheet" href="stylesheets/bootstrap.css" />
5 <title>Cafe Map</title> 5 <title>Cafe Map</title>
6 <style> 6 <style>
7 - .navbar{ 7 + .navbar {
8 background-color: #1d2124 !important; 8 background-color: #1d2124 !important;
9 } 9 }
10 - .btn-primary{ 10 + .btn-primary {
11 - color : white !important; 11 + color: white !important;
12 + }
13 + p {
14 + font-family: "Noto Sans KR", sans-serif;
15 + }
16 + h1 {
17 + font-family: "Noto Sans KR", sans-serif;
18 + }
19 + h4 {
20 + font-family: "Noto Sans KR", sans-serif;
21 + }
22 + h2 {
23 + font-family: "Noto Sans KR", sans-serif;
24 + }
25 + h3 {
26 + font-family: "Noto Sans KR", sans-serif;
27 + }
28 + h5 {
29 + font-family: "Noto Sans KR", sans-serif;
12 } 30 }
13 - p{font-family: 'Noto Sans KR', sans-serif;}
14 - h1{font-family: 'Noto Sans KR', sans-serif;}
15 - h4{font-family: 'Noto Sans KR', sans-serif;}
16 - h2{font-family: 'Noto Sans KR', sans-serif;}
17 - h3{font-family: 'Noto Sans KR', sans-serif;}
18 - h5{font-family: 'Noto Sans KR', sans-serif;}
19 .placeinfo_wrap { 31 .placeinfo_wrap {
20 position: absolute; 32 position: absolute;
21 bottom: 28px; 33 bottom: 28px;
...@@ -83,35 +95,48 @@ ...@@ -83,35 +95,48 @@
83 margin-top: 0; 95 margin-top: 0;
84 } 96 }
85 </style> 97 </style>
86 -</head> 98 + </head>
87 -<body> 99 + <body>
88 -<nav class="navbar navbar-expand-lg navbar-dark bg-dark"> 100 + <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
89 - <a class="navbar-brand" href="/"><img src="images/home.png" width="40" height="40" alt=""> 101 + <a class="navbar-brand" href="/"
102 + ><img src="images/home.png" width="40" height="40" alt="" />
90 </a> 103 </a>
91 - <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> 104 + <button
105 + class="navbar-toggler"
106 + type="button"
107 + data-toggle="collapse"
108 + data-target="#navbarSupportedContent"
109 + aria-controls="navbarSupportedContent"
110 + aria-expanded="false"
111 + aria-label="Toggle navigation"
112 + >
92 <span class="navbar-toggler-icon"></span> 113 <span class="navbar-toggler-icon"></span>
93 </button> 114 </button>
94 <div class="collapse navbar-collapse" id="navbarSupportedContent"> 115 <div class="collapse navbar-collapse" id="navbarSupportedContent">
95 - <a class="navbar-brand" href="/" ><strong>Home</strong></a> 116 + <a class="navbar-brand" href="/"><strong>Home</strong></a>
96 <ul class="navbar-nav mr-auto mt-2 mt-lg-0"> 117 <ul class="navbar-nav mr-auto mt-2 mt-lg-0">
97 -
98 <li class="nav-item active"> 118 <li class="nav-item active">
99 - <a class="nav-link" style="color:#ffffff" href="/" onclick="signOut();">Logout<span class="sr-only">(current)</span></a> 119 + <a
120 + class="nav-link"
121 + style="color: #ffffff"
122 + href="/"
123 + onclick="signOut();"
124 + >Logout<span class="sr-only">(current)</span></a
125 + >
100 </li> 126 </li>
101 -
102 </ul> 127 </ul>
103 </div> 128 </div>
104 -</nav> 129 + </nav>
105 -<div class="pricing-header px-3 py-1 pt-md-3 pb-md-1 mx-auto text-center"> 130 + <div class="pricing-header px-3 py-1 pt-md-3 pb-md-1 mx-auto text-center">
106 - <h3 class="display-6 font-weight-bold" >Map</h3> 131 + <h3 class="display-6 font-weight-bold">Map</h3>
107 -</div> 132 + </div>
108 133
109 -<div id="map" style="width: 100%; height: 575px"></div> 134 + <div id="map" style="width: 100%; height: 575px"></div>
110 -<script 135 + <script
111 type="text/javascript" 136 type="text/javascript"
112 src="//dapi.kakao.com/v2/maps/sdk.js?appkey=68cbccbcd6f0fef0a213e62ad37393ee&libraries=services" 137 src="//dapi.kakao.com/v2/maps/sdk.js?appkey=68cbccbcd6f0fef0a213e62ad37393ee&libraries=services"
113 -></script> 138 + ></script>
114 -<script> 139 + <script>
115 var lat = ""; 140 var lat = "";
116 var lon = ""; 141 var lon = "";
117 var placeOverlay = new kakao.maps.CustomOverlay({ zIndex: 1 }); 142 var placeOverlay = new kakao.maps.CustomOverlay({ zIndex: 1 });
...@@ -241,8 +266,8 @@ ...@@ -241,8 +266,8 @@
241 placeOverlay.setPosition(new kakao.maps.LatLng(place.y, place.x)); 266 placeOverlay.setPosition(new kakao.maps.LatLng(place.y, place.x));
242 placeOverlay.setMap(map); 267 placeOverlay.setMap(map);
243 } 268 }
244 -</script> 269 + </script>
245 -<script src="javascripts/bootstrap.js"></script> 270 + <script src="javascripts/bootstrap.js"></script>
246 -<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> 271 + <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
247 -</body> 272 + </body>
248 </html> 273 </html>
......