Jeongmin Seo

Update release_v0.2.0

...@@ -49,8 +49,7 @@ io.on('connection', (socket) => { ...@@ -49,8 +49,7 @@ io.on('connection', (socket) => {
49 io.emit("chatting", { 49 io.emit("chatting", {
50 name, 50 name,
51 msg, 51 msg,
52 - time: moment.format("h:ss A") 52 + time : moment(new Date()).format("h:ss A")})
53 - })
54 }) 53 })
55 }); 54 });
56 55
......
...@@ -12,30 +12,32 @@ class User { ...@@ -12,30 +12,32 @@ class User {
12 12
13 async login() { 13 async login() {
14 const client = this.body; 14 const client = this.body;
15 - 15 +
16 try { 16 try {
17 - try { 17 + const connection = await pool.getConnection(async (conn) => conn);
18 - const {id, password} = await UserStorage.getUserInfo(connection, client.id); 18 + try {
19 - // console.log(id, password); 19 + const { id, password } = await UserStorage.getUserInfo(
20 - 20 + connection,
21 - if (id) { 21 + client.id
22 - if (id === client.id && password === client.password) { 22 + );
23 - return { success: true}; 23 + if (id) {
24 - } 24 + if (id === client.id && password === client.password) {
25 - return { success : false, msg: "비밀번호가 틀렸습니다."}; 25 + return { success: true };
26 - } 26 + }
27 - return {success: false, msg: "존재하지 않는 아이디입니다."}; 27 + return { success: false, msg: "비밀번호가 틀렸습니다." };
28 - } catch (err) {
29 - return {success: false, msg: err};
30 - } finally {
31 - connection.release();
32 } 28 }
33 - } catch (err) { 29 + return { success: false, msg: "존재하지 않는 아이디입니다." };
34 - logger.error(`login DB Connection error\n: ${JSON.stringify(err)}`); 30 + } catch (err) {
35 - return false; 31 + return { success: false, msg: err };
32 + } finally {
33 + connection.release();
36 } 34 }
37 - } 35 + } catch (err) {
38 - 36 + logger.error(`login DB Connection error\n: ${JSON.stringify(err)}`);
37 + return false;
38 + }
39 + }
40 +
39 async register() { 41 async register() {
40 const client = this.body; 42 const client = this.body;
41 try { 43 try {
......
...@@ -13,16 +13,18 @@ class UserStorage { ...@@ -13,16 +13,18 @@ class UserStorage {
13 13
14 // static getUsers(isAll, ...fields) {} 14 // static getUsers(isAll, ...fields) {}
15 static async getUserInfo(connection, id) { 15 static async getUserInfo(connection, id) {
16 - return new Promise((resolve, reject) => { 16 + const query = `SELECT * FROM users WHERE id = '${id}';`;
17 - const query = "SELECT * FROM users WHERE id = ?;"; 17 + console.log(query);
18 - connection.query(query, [id], (err, data) => { 18 + let [row] = await connection.query(query);
19 - if (err) reject(`${err}`); 19 + console.log(row[0]);
20 - // console.log(data[0]); 20 + return row[0];
21 - resolve(data[0]); 21 + // , [id], (err, data) => {
22 - pool.releaseConnection(conn); 22 + // console.log("44444444");
23 - }); 23 + // if (err) reject(`${err}`);
24 - }); 24 + // resolve(data[0]);
25 - } 25 + // pool.releaseConnection(conn);
26 + // });
27 + }
26 28
27 static async save (connection, userInfo) { 29 static async save (connection, userInfo) {
28 const query = "INSERT INTO users(id, name, password) VALUES(?, ?, ?);"; 30 const query = "INSERT INTO users(id, name, password) VALUES(?, ?, ?);";
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
40 cursor: pointer; 40 cursor: pointer;
41 font-family: inherit; 41 font-family: inherit;
42 color :lightslategray; 42 color :lightslategray;
43 - margin-right: 30px; 43 + margin-right: 0px;
44 } 44 }
45 45
46 .category-title { 46 .category-title {
......
...@@ -7,13 +7,15 @@ ...@@ -7,13 +7,15 @@
7 } 7 }
8 8
9 .infowindow-title { 9 .infowindow-title {
10 - font-size: 3rem; 10 + font-size: 15px;
11 + color: rebeccapurple;
12 + font-weight: 600;
11 } 13 }
12 14
13 .infowindow-address { 15 .infowindow-address {
14 - font-size: 1.6rem; 16 + font-size: 8px;
15 } 17 }
16 18
17 .infowindow-btn { 19 .infowindow-btn {
18 - font-size: 1.6rem; 20 + font-size: 8px;
19 } 21 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
4 4
5 var container = document.getElementById('map'); //지도를 담을 영역의 DOM 레퍼런스 5 var container = document.getElementById('map'); //지도를 담을 영역의 DOM 레퍼런스
6 var options = { //지도를 생성할 때 필요한 기본 옵션 6 var options = { //지도를 생성할 때 필요한 기본 옵션
7 - center: new kakao.maps.LatLng(37.54, 126.96), //지도의 중심좌표. 7 + center: new kakao.maps.LatLng(37.248, 127.08), //지도의 중심좌표.
8 - level: 7 //지도의 레벨(확대, 축소 정도) 8 + level: 4 //지도의 레벨(확대, 축소 정도)
9 }; 9 };
10 10
11 var map = new kakao.maps.Map(container, options); //지도 생성 및 객체 리턴 11 var map = new kakao.maps.Map(container, options); //지도 생성 및 객체 리턴
...@@ -18,41 +18,44 @@ ...@@ -18,41 +18,44 @@
18 * 2. 데이터 준비하기(제목, 주소, 카테고리) 18 * 2. 데이터 준비하기(제목, 주소, 카테고리)
19 */ 19 */
20 20
21 -const dataSet = [ 21 +// const dataSet = [
22 - { 22 +// {
23 - title: "희락돈까스", 23 +// title: "희락돈까스",
24 - address: "서울 영등포구 양산로 210", 24 +// address: "서울 영등포구 양산로 210",
25 - category: "양식", 25 +// category: "양식",
26 - }, 26 +// },
27 - { 27 +// {
28 - title: "즉석우동짜장", 28 +// title: "즉석우동짜장",
29 - address: "서울 영등포구 대방천로 260", 29 +// address: "서울 영등포구 대방천로 260",
30 - category: "한식", 30 +// category: "한식",
31 - }, 31 +// },
32 - { 32 +// {
33 - title: "아카사카", 33 +// title: "아카사카",
34 - address: "서울 서초구 서초대로74길 23", 34 +// address: "서울 서초구 서초대로74길 23",
35 - category: "일식", 35 +// category: "일식",
36 - }
37 -];
38 -
39 -// async function getDataSet(category) {
40 -// let qs = category;
41 -// if(!qs) {
42 -// qs = "";
43 // } 36 // }
37 +// ];
44 38
45 -// const dataSet = await axios({ 39 + async function getDataSet(category) {
46 -// method: "get", // http method 40 + let qs = category;
47 -// url: `http://localhost:3000/restaurants?category=${qs}`, 41 + if(!qs) {
48 -// headers: {}, 42 + qs = "";
49 -// data: {}, 43 + }
50 -// }); 44 +
45 + const dataSet = await axios({
46 + method: "get", // http method
47 + url: `http://localhost:3000/restaurants?category=${qs}`,
48 + headers: {},
49 + data: {},
50 + });
51 + // console.log(dataSet);
52 +
53 + return dataSet.data.result;
54 +}
51 55
52 -// return dataSet.data.result;
53 // } 56 // }
54 57
55 -// getDataSet(); 58 + getDataSet();
56 59
57 /****************************************************************************** 60 /******************************************************************************
58 * 3. 여러개 마커찍기 61 * 3. 여러개 마커찍기
...@@ -75,7 +78,7 @@ const dataSet = [ ...@@ -75,7 +78,7 @@ const dataSet = [
75 }); 78 });
76 } 79 }
77 80
78 - setMap(dataSet); 81 +// setMap(dataSet);
79 82
80 /* 83 /*
81 ************************************************************* 84 *************************************************************
...@@ -170,6 +173,7 @@ const dataSet = [ ...@@ -170,6 +173,7 @@ const dataSet = [
170 const categoryId = event.target.id; 173 const categoryId = event.target.id;
171 const category = categoryMap[categoryId]; 174 const category = categoryMap[categoryId];
172 175
176 +
173 try { 177 try {
174 // 데이터 분류 178 // 데이터 분류
175 let categorizedDataSet = await getDataSet(category); 179 let categorizedDataSet = await getDataSet(category);
...@@ -194,16 +198,13 @@ const dataSet = [ ...@@ -194,16 +198,13 @@ const dataSet = [
194 } 198 }
195 } 199 }
196 200
197 - setMap(dataSet); 201 + async function setting() {
198 - 202 + try {
199 -// async function setting() { 203 + const dataSet = await getDataSet();
200 -// try { 204 + setMap(dataSet);
201 -// const dataSet = await getDataSet(); 205 + } catch (error) {
202 -// setMap(dataSet); 206 + console.error(error);
203 - 207 + }
204 -// } catch (error) { 208 + }
205 -// console.error(error);
206 -// }
207 -// }
208 209
209 -// setting();
...\ No newline at end of file ...\ No newline at end of file
210 + setting();
...\ No newline at end of file ...\ No newline at end of file
......
1 -"use strict" 1 +"use strict";
2 -const socket = io.connect("http://localhost:3000/", {transports:['websocket']}); 2 +
3 +const socketIO = require("socket.io");
4 +const http = require("http");
5 +const app = express();
6 +const server = http.createServer(app);
7 +const io = socketIO(server);
8 +const socket = io();
9 +//.connect("http://localhost:3000/chat", {transports:['websocket']});
3 10
4 const nickname = document.querySelector("#nickname") 11 const nickname = document.querySelector("#nickname")
5 const chatlist = document.querySelector(".chatting-list") 12 const chatlist = document.querySelector(".chatting-list")
......
...@@ -25,15 +25,12 @@ async function register() { ...@@ -25,15 +25,12 @@ async function register() {
25 return alert("비밀번호가 일치하지 않습니다.") 25 return alert("비밀번호가 일치하지 않습니다.")
26 } 26 }
27 27
28 - console.log(1);
29 const req = { 28 const req = {
30 id: id.value, 29 id: id.value,
31 name: name.value, 30 name: name.value,
32 password: password.value, 31 password: password.value,
33 }; 32 };
34 33
35 - console.log("여기 안찍히나????");
36 -
37 fetch("/register", { 34 fetch("/register", {
38 method: "POST", 35 method: "POST",
39 headers: { 36 headers: {
......
...@@ -16,6 +16,10 @@ const output = { ...@@ -16,6 +16,10 @@ const output = {
16 res.render("home/register"); 16 res.render("home/register");
17 }, 17 },
18 18
19 + chat: (req, res) => {
20 + res.render("home/chat");
21 + },
22 +
19 // restaurants: (req, res) => { 23 // restaurants: (req, res) => {
20 // res.render("home/restaurants"); 24 // res.render("home/restaurants");
21 // } 25 // }
......
...@@ -12,6 +12,7 @@ router.get("/", ctrl.output.hello); ...@@ -12,6 +12,7 @@ router.get("/", ctrl.output.hello);
12 router.get("/login", ctrl.output.login); 12 router.get("/login", ctrl.output.login);
13 router.get("/register", ctrl.output.register); 13 router.get("/register", ctrl.output.register);
14 router.get("/restaurants", index.readRestaurants); 14 router.get("/restaurants", index.readRestaurants);
15 +router.get("/chat", ctrl.output.chat);
15 // router.get("/restaurants", Restaurant.restaurants); 16 // router.get("/restaurants", Restaurant.restaurants);
16 // router.get("/restaurants", ctrl.output.restaurants); 17 // router.get("/restaurants", ctrl.output.restaurants);
17 18
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
4 <meta charset="UTF-8" /> 4 <meta charset="UTF-8" />
5 <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge" />
6 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7 - <title>Document</title> 7 + <title>채팅방</title>
8 <link rel="stylesheet" href="/css/home/chat.css" /> 8 <link rel="stylesheet" href="/css/home/chat.css" />
9 </head> 9 </head>
10 <body> 10 <body>
...@@ -23,8 +23,12 @@ ...@@ -23,8 +23,12 @@
23 </span> 23 </span>
24 </div> 24 </div>
25 </div> 25 </div>
26 - 26 + <script
27 - <script src="/socket.io/socket.io.js"></script> 27 + src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.5.1/socket.io.js"
28 + integrity="sha512-9mpsATI0KClwt+xVZfbcf2lJ8IFBAwsubJ6mI3rtULwyM3fBmQFzj0It4tGqxLOGQwGfJdk/G+fANnxfq9/cew=="
29 + crossorigin="anonymous"
30 + referrerpolicy="no-referrer"
31 + ></script>
28 <script src="/js/home/chat.js"></script> 32 <script src="/js/home/chat.js"></script>
29 </body> 33 </body>
30 </html> 34 </html>
......
...@@ -9,13 +9,14 @@ ...@@ -9,13 +9,14 @@
9 <meta name="description" content="맛집지도 서비스" /> 9 <meta name="description" content="맛집지도 서비스" />
10 <meta name="keywords" content="맛집지도, 맛집추천, 실시간채팅" /> 10 <meta name="keywords" content="맛집지도, 맛집추천, 실시간채팅" />
11 <link rel="stylesheet" href="/css/home/index.css" /> 11 <link rel="stylesheet" href="/css/home/index.css" />
12 + <link rel="stylesheet" href="/css/home/map.css" />
12 </head> 13 </head>
13 <body> 14 <body>
14 <nav> 15 <nav>
15 <div class="inner"> 16 <div class="inner">
16 <div class="nav-container"> 17 <div class="nav-container">
17 <h1 class="nav-title">맛집지도</h1> 18 <h1 class="nav-title">맛집지도</h1>
18 - <button class="nav-contact">Chatting Rooms</button> 19 + <button class="nav-contact">Contact : balljm@naver.com</button>
19 </div> 20 </div>
20 </div> 21 </div>
21 </nav> 22 </nav>
...@@ -48,12 +49,12 @@ ...@@ -48,12 +49,12 @@
48 type="text/javascript" 49 type="text/javascript"
49 src="//dapi.kakao.com/v2/maps/sdk.js?appkey=e55f753363b95e27b799aa6286a6c398&libraries=services" 50 src="//dapi.kakao.com/v2/maps/sdk.js?appkey=e55f753363b95e27b799aa6286a6c398&libraries=services"
50 ></script> 51 ></script>
51 - <script src="/js/home/axios-index.js"></script> 52 + <script
52 - <!-- <script
53 src="https://cdnjs.cloudflare.com/ajax/libs/axios/1.0.0-alpha.1/axios.min.js" 53 src="https://cdnjs.cloudflare.com/ajax/libs/axios/1.0.0-alpha.1/axios.min.js"
54 integrity="sha512-xIPqqrfvUAc/Cspuj7Bq0UtHNo/5qkdyngx6Vwt+tmbvTLDszzXM0G6c91LXmGrRx8KEPulT+AfOOez+TeVylg==" 54 integrity="sha512-xIPqqrfvUAc/Cspuj7Bq0UtHNo/5qkdyngx6Vwt+tmbvTLDszzXM0G6c91LXmGrRx8KEPulT+AfOOez+TeVylg=="
55 crossorigin="anonymous" 55 crossorigin="anonymous"
56 referrerpolicy="no-referrer" 56 referrerpolicy="no-referrer"
57 - ></script> --> 57 + ></script>
58 + <script src="/js/home/axios-index.js"></script>
58 </body> 59 </body>
59 </html> 60 </html>
......