diff --git a/client/.eslintcache b/client/.eslintcache index 19f541e84d0fa549a40bd45f0c01e2c87b80a71f..2a03f7d420de07377f7f71b49134b8e69d2a3c16 100644 --- a/client/.eslintcache +++ b/client/.eslintcache @@ -1 +1 @@ -[{"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\index.js":"1","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\reportWebVitals.js":"2","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Place.js":"3","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Login.js":"4","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\utils\\catchErrors.js":"5","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Signup.js":"6","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\utils\\auth.js":"7","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Paginations.js":"8","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Search.js":"9","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\App.js":"10","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\PrivateRoute.js":"11","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Bookmark.js":"12"},{"size":1267,"mtime":1611500254459,"results":"13","hashOfConfig":"14"},{"size":362,"mtime":499162500000,"results":"15","hashOfConfig":"14"},{"size":1650,"mtime":1611552739016,"results":"16","hashOfConfig":"14"},{"size":3147,"mtime":1611553267391,"results":"17","hashOfConfig":"14"},{"size":405,"mtime":1609915408569,"results":"18","hashOfConfig":"14"},{"size":2995,"mtime":1611489922054,"results":"19","hashOfConfig":"14"},{"size":726,"mtime":1611495738863,"results":"20","hashOfConfig":"14"},{"size":2199,"mtime":1610503781980,"results":"21","hashOfConfig":"14"},{"size":10588,"mtime":1611552795555,"results":"22","hashOfConfig":"14"},{"size":2167,"mtime":1611500202857,"results":"23","hashOfConfig":"14"},{"size":486,"mtime":1611489922054,"results":"24","hashOfConfig":"14"},{"size":2609,"mtime":1611551384114,"results":"25","hashOfConfig":"14"},{"filePath":"26","messages":"27","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"28","usedDeprecatedRules":"29"},"1t9w6go",{"filePath":"30","messages":"31","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"29"},{"filePath":"32","messages":"33","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"34","usedDeprecatedRules":"35"},{"filePath":"36","messages":"37","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"29"},{"filePath":"38","messages":"39","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"29"},{"filePath":"40","messages":"41","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"29"},{"filePath":"42","messages":"43","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"29"},{"filePath":"44","messages":"45","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"29"},{"filePath":"46","messages":"47","errorCount":0,"warningCount":14,"fixableErrorCount":0,"fixableWarningCount":0,"source":"48","usedDeprecatedRules":"29"},{"filePath":"49","messages":"50","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"51","usedDeprecatedRules":"29"},{"filePath":"52","messages":"53","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"29"},{"filePath":"54","messages":"55","errorCount":0,"warningCount":15,"fixableErrorCount":0,"fixableWarningCount":0,"source":"56","usedDeprecatedRules":"29"},"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\index.js",["57"],"import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport App from './App'\r\nimport Search from './Search';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport Signup from './Components/Signup'\r\nimport Login from './Components/Login'\r\nimport PrivateRoute from \"./Components/PrivateRoute\";\r\nimport axios from 'axios'\r\nimport Bookmark from \"./Bookmark\"\r\nimport {\r\n BrowserRouter as Router,\r\n Switch,\r\n Route,\r\n Redirect,\r\n} from \"react-router-dom\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n",["58","59"],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\reportWebVitals.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Place.js",["60","61"],"import axios from 'axios';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { Modal, Container, Row, Button, } from 'react-bootstrap';\r\n\r\nfunction Place(props) {\r\n const [reviews, setReviews] = useState()\r\n const [db, setDb] = useState(false)\r\n const getReview = () => {\r\n axios({ url: `/api/review?keyword=${props.place.name}`, method: 'post', data: { db: db } })\r\n .then(res => {\r\n console.log(\"place res.data\", res.data)\r\n setReviews(res.data)\r\n })\r\n .catch(err => {\r\n console.log(err)\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n getReview();\r\n }, [])\r\n\r\n return (\r\n \r\n \r\n \r\n {props.index + 1}. {props.place.name}\r\n \r\n \r\n \r\n \r\n {Array.isArray(reviews) ? reviews.map((review, index) => {\r\n return (\r\n \r\n {review.title}\r\n
{review.summary}
\r\n
{review.content}
\r\n
\r\n )\r\n })\r\n : \"리뷰가 없습니다.\"}\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default Place;\r\n",["62","63"],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Login.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\utils\\catchErrors.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Signup.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\utils\\auth.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Paginations.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Search.js",["64","65","66","67","68","69","70","71","72","73","74","75","76","77"],"import React, { useState, useEffect } from 'react';\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport ohuh from './ohuh-sm.PNG';\r\nimport Place from './Components/Place';\r\nimport { Container, Form, Row, Col, Card, Image, InputGroup, FormControl, Button, Modal } from 'react-bootstrap';\r\nimport Paginations from './Components/Paginations.js'\r\nimport catchErrors from './utils/catchErrors.js'\r\n// import * as Icon from 'react-bootstrap-icons';\r\nimport axios from \"axios\";\r\n\r\nconst INIT_PAGE = {\r\n title: '',\r\n url: '',\r\n} //초기페이지에 타이틀이랑 url 저장\r\n\r\nfunction Search(props) {\r\n const endPage = 10;\r\n const [state, setState] = useState(false);\r\n const [index, setIndex] = useState(1);\r\n const [showSet, setShowSet] = useState([false, false, false, false]);\r\n const [search, setSearch] = useState(props.location.state.id);\r\n const [mobile, setMobile] = useState();\r\n const [show, setShow] = useState(false);\r\n const [page, setPage] = useState(INIT_PAGE)\r\n const [success, setSuccess] = useState(false)\r\n const [error, setError] = useState('')\r\n\r\n const handleClose = () => setShow(false);\r\n const handleShow = () => setShow(true);\r\n\r\n useEffect(() => {\r\n if (window.innerWidth < 960) {\r\n setMobile(true)\r\n } else {\r\n setMobile(false)\r\n }\r\n }, []);\r\n\r\n const places = [{\r\n name: \"한라산(hallasan)\",\r\n address: \"제주 서귀포시 토평동 산15-1\",\r\n img: \"data:image/png;base64,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\",\r\n // img: \"https://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/KOCIS_Halla_Mountain_in_Jeju-do_%286387785543%29.jpg/269px-KOCIS_Halla_Mountain_in_Jeju-do_%286387785543%29.jpg?size=200x200\",\r\n // }, {\r\n // name: \"성산일출봉(sungsan)\",\r\n // address: \"제주 서귀포시 성산읍 성산리 1\",\r\n // img: \"https://www.jeju.go.kr/pub/site/geopark/images/sub/sub03/02%EC%A7%80%EC%A7%88%EB%A7%88%EC%9D%84%EC%9D%B4%EC%95%BC%EA%B8%B0/%EC%A7%80%EC%A7%88%EB%A7%88%EC%9D%84/%EC%A7%80%EC%A7%88%EB%A7%88%EC%9D%84_%EC%84%B1%EC%82%B0%EC%9D%BC%EC%B6%9C%EB%B4%89/1412402261.jpg?400/400\",\r\n // }, {\r\n // name: \"해녀의 집(haenyeo)\",\r\n // address: \"제주 서귀포시 성산읍 한도로 141-13지번오조리 3 오조해녀의집\",\r\n // img: \"https://mblogthumb-phinf.pstatic.net/MjAxNjExMTdfMTc0/MDAxNDc5MzU3ODU0ODQy.KZYXCjzsXT3rCsE4HXBfxyCg2buvluBvN_7NxVp7BSwg.loJc89d8JjGXdNCn-4yMd7aMWPjfrZn21TI9Hyzemkog.JPEG.icocam11/20161010_100205.jpg?type=w800\",\r\n // }, {\r\n // name: \"오설록 티 뮤지엄(osulloc)\",\r\n // address: \"제주 서귀포시 안덕면 신화역사로 15 오설록지번서광리 1235-1 오설록\",\r\n // img: \"https://cdnweb01.wikitree.co.kr/webdata/editor/202007/01/img_20200701143323_2ced7627.webp\",\r\n // }, {\r\n // name: \"오설록 티 뮤지엄(osulloc)\",\r\n // address: \"제주 서귀포시 안덕면 신화역사로 15 오설록지번서광리 1235-1 오설록\",\r\n // img: \"https://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/KOCIS_Halla_Mountain_in_Jeju-do_%286387785543%29.jpg/269px-KOCIS_Halla_Mountain_in_Jeju-do_%286387785543%29.jpg\",\r\n }]\r\n\r\n if (state !== false) {\r\n return ;\r\n }\r\n\r\n const handlePage = (num) => {\r\n setIndex(num);\r\n }\r\n\r\n // async function bookmarkSave() {\r\n // await axios.put('/api/users', {userId:userId, bookmarkId:bookmarkId})\r\n // }\r\n\r\n const handleChange = (e) => {\r\n setSearch(e.target.value);\r\n }\r\n\r\n async function handleSubmit(e){\r\n setState(true); //버튼이 눌려서 handlesubmit이될때 setState값이 true로 바뀐다\r\n }\r\n\r\n function paginate(items, pageNumber, itemNumber) {\r\n const page = []; //페이지를 빈배열로 설정\r\n const startIndex = (pageNumber - 1) * itemNumber // 처음인덱스 값이 페이지넘버 -1 * 아이템 넘버로 \r\n for (var i = 0; i < itemNumber; i++) { \r\n page.push(items[(startIndex + i)])\r\n } \r\n return page\r\n }\r\n\r\n const pagePlace = paginate(places, index, 1)\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {pagePlace.map((place, index) => {\r\n return (\r\n \r\n \r\n {/* */}\r\n {place.name}\r\n \r\n \r\n \r\n \r\n {place.address} \r\n \r\n setShowSet([false, false, false, false])} />\r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n { console.log(showSet)}\r\n {/* show가 전부 true로 바뀌어서 전부 다 보이게 되는 것이다. */}\r\n \r\n \r\n \r\n
\r\n\r\n );\r\n}\r\n\r\nexport default Search\r\n","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\App.js",["78","79","80","81"],"import React, { useEffect, useState } from 'react';\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport ohuh from './ohuh.PNG'\r\nimport { Container, Row, Form, Image, InputGroup, Button, Col, FormControl, Navbar, Nav } from 'react-bootstrap';\r\nimport { handleLogout, isAuthenticated } from './utils/auth.js'\r\n\r\nfunction App() {\r\n const [state, setState] = useState(false);\r\n const [search, setSearch] = useState(\"\");\r\n const user = isAuthenticated()\r\n\r\n if (state !== false) {\r\n return ;\r\n }\r\n\r\n const handleChange = (e) => {\r\n setSearch(e.target.value);\r\n } //바뀌는 것이 있을때 이벤트 발생\r\n\r\n const handleSubmit = () => {\r\n setState(true);\r\n } //submit 버튼을 누르면 state 값을 true로 바뀐다\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default App;\r\n","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\PrivateRoute.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Bookmark.js",["82","83","84","85","86","87","88","89","90","91","92","93","94","95","96"],"import React, { useState, useEffect } from 'react'\r\nimport { Alert, Col, Card, Container, Form, Row, Button, Nav, Navbar, ListGroup, Image, Table } from \"react-bootstrap\"\r\nimport axios from \"axios\"\r\nimport catchErrors from './utils/catchErrors.js'\r\nimport { isAuthenticated } from './utils/auth'\r\n\r\n\r\nconst INIT_PAGE = {\r\n bookmark: ['성산일출봉', '제주도', '한라산', '주상절리', '오설록 티 뮤지엄'],\r\n \r\n}\r\n\r\nconst user = isAuthenticated()\r\n\r\nfunction Bookmark() {\r\n const [page, setPage] = useState(INIT_PAGE)\r\n const [error, setError] = useState('')\r\n const [success, setSuccess] = useState(false)\r\n const [state, setState] = useState(false);\r\n\r\n const user = isAuthenticated()\r\n\r\n const userId = localStorage.getItem('loginStatus')\r\n\r\n async function getBookmark( ) {\r\n try {\r\n setError('')\r\n console.log(page)\r\n console.log(userId)\r\n await axios.post(`/api/users/bookmark`, {bookmark: page, userId: userId})\r\n \r\n } catch (error) {\r\n catchErrors(error, setError)\r\n } \r\n }\r\n\r\n // async function handleSubmit(e){\r\n // setState(true); //버튼이 눌려서 handlesubmit이될때 setState값이 true로 바뀐다\r\n // try { //respons 서버에 post로 요청하여 데이터를 받아온다\r\n // const response = await axios.post('/api/users/bookmark', page)\r\n // setSuccess(true)\r\n // } catch (error) {\r\n // console.log(error)\r\n // catchErrors(error, setError)\r\n // }\r\n // }\r\n\r\n // useEffect(() => {\r\n // getBookmark(user)\r\n // }, [user])\r\n\r\n\r\n\r\n return (\r\n \r\n \r\n 북마크\r\n \r\n \r\n \r\n
\r\n \r\n {page.bookmark[0]}\r\n {page.bookmark[1]}\r\n {page.bookmark[2]}\r\n {page.bookmark[3]}\r\n {page.bookmark[4]}\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Bookmark",{"ruleId":"97","severity":1,"message":"98","line":11,"column":8,"nodeType":"99","messageId":"100","endLine":11,"endColumn":13},{"ruleId":"101","replacedBy":"102"},{"ruleId":"103","replacedBy":"104"},{"ruleId":"97","severity":1,"message":"105","line":7,"column":14,"nodeType":"99","messageId":"100","endLine":7,"endColumn":19},{"ruleId":"106","severity":1,"message":"107","line":21,"column":6,"nodeType":"108","endLine":21,"endColumn":8,"suggestions":"109"},{"ruleId":"101","replacedBy":"110"},{"ruleId":"103","replacedBy":"111"},{"ruleId":"97","severity":1,"message":"112","line":5,"column":83,"nodeType":"99","messageId":"100","endLine":5,"endColumn":88},{"ruleId":"97","severity":1,"message":"113","line":7,"column":8,"nodeType":"99","messageId":"100","endLine":7,"endColumn":19},{"ruleId":"97","severity":1,"message":"98","line":9,"column":8,"nodeType":"99","messageId":"100","endLine":9,"endColumn":13},{"ruleId":"97","severity":1,"message":"114","line":22,"column":12,"nodeType":"99","messageId":"100","endLine":22,"endColumn":18},{"ruleId":"97","severity":1,"message":"115","line":23,"column":12,"nodeType":"99","messageId":"100","endLine":23,"endColumn":16},{"ruleId":"97","severity":1,"message":"116","line":24,"column":12,"nodeType":"99","messageId":"100","endLine":24,"endColumn":16},{"ruleId":"97","severity":1,"message":"117","line":24,"column":18,"nodeType":"99","messageId":"100","endLine":24,"endColumn":25},{"ruleId":"97","severity":1,"message":"118","line":25,"column":12,"nodeType":"99","messageId":"100","endLine":25,"endColumn":19},{"ruleId":"97","severity":1,"message":"119","line":25,"column":21,"nodeType":"99","messageId":"100","endLine":25,"endColumn":31},{"ruleId":"97","severity":1,"message":"120","line":26,"column":12,"nodeType":"99","messageId":"100","endLine":26,"endColumn":17},{"ruleId":"97","severity":1,"message":"121","line":26,"column":19,"nodeType":"99","messageId":"100","endLine":26,"endColumn":27},{"ruleId":"97","severity":1,"message":"122","line":28,"column":11,"nodeType":"99","messageId":"100","endLine":28,"endColumn":22},{"ruleId":"97","severity":1,"message":"123","line":29,"column":11,"nodeType":"99","messageId":"100","endLine":29,"endColumn":21},{"ruleId":"124","severity":1,"message":"125","line":99,"column":35,"nodeType":"126","endLine":99,"endColumn":76},{"ruleId":"97","severity":1,"message":"127","line":1,"column":17,"nodeType":"99","messageId":"100","endLine":1,"endColumn":26},{"ruleId":"97","severity":1,"message":"128","line":2,"column":10,"nodeType":"99","messageId":"100","endLine":2,"endColumn":14},{"ruleId":"97","severity":1,"message":"129","line":4,"column":64,"nodeType":"99","messageId":"100","endLine":4,"endColumn":75},{"ruleId":"97","severity":1,"message":"130","line":4,"column":77,"nodeType":"99","messageId":"100","endLine":4,"endColumn":83},{"ruleId":"97","severity":1,"message":"127","line":1,"column":27,"nodeType":"99","messageId":"100","endLine":1,"endColumn":36},{"ruleId":"97","severity":1,"message":"131","line":2,"column":10,"nodeType":"99","messageId":"100","endLine":2,"endColumn":15},{"ruleId":"97","severity":1,"message":"132","line":2,"column":17,"nodeType":"99","messageId":"100","endLine":2,"endColumn":20},{"ruleId":"97","severity":1,"message":"133","line":2,"column":22,"nodeType":"99","messageId":"100","endLine":2,"endColumn":26},{"ruleId":"97","severity":1,"message":"134","line":2,"column":45,"nodeType":"99","messageId":"100","endLine":2,"endColumn":48},{"ruleId":"97","severity":1,"message":"135","line":2,"column":82,"nodeType":"99","messageId":"100","endLine":2,"endColumn":87},{"ruleId":"97","severity":1,"message":"136","line":2,"column":89,"nodeType":"99","messageId":"100","endLine":2,"endColumn":94},{"ruleId":"97","severity":1,"message":"137","line":13,"column":7,"nodeType":"99","messageId":"100","endLine":13,"endColumn":11},{"ruleId":"97","severity":1,"message":"117","line":16,"column":18,"nodeType":"99","messageId":"100","endLine":16,"endColumn":25},{"ruleId":"97","severity":1,"message":"120","line":17,"column":12,"nodeType":"99","messageId":"100","endLine":17,"endColumn":17},{"ruleId":"97","severity":1,"message":"118","line":18,"column":12,"nodeType":"99","messageId":"100","endLine":18,"endColumn":19},{"ruleId":"97","severity":1,"message":"119","line":18,"column":21,"nodeType":"99","messageId":"100","endLine":18,"endColumn":31},{"ruleId":"97","severity":1,"message":"138","line":19,"column":12,"nodeType":"99","messageId":"100","endLine":19,"endColumn":17},{"ruleId":"97","severity":1,"message":"139","line":19,"column":19,"nodeType":"99","messageId":"100","endLine":19,"endColumn":27},{"ruleId":"97","severity":1,"message":"137","line":21,"column":11,"nodeType":"99","messageId":"100","endLine":21,"endColumn":15},"no-unused-vars","'axios' is defined but never used.","Identifier","unusedVar","no-native-reassign",["140"],"no-negated-in-lhs",["141"],"'setDb' is assigned a value but never used.","react-hooks/exhaustive-deps","React Hook useEffect has a missing dependency: 'getReview'. Either include it or remove the dependency array.","ArrayExpression",["142"],["140"],["141"],"'Modal' is defined but never used.","'catchErrors' is defined but never used.","'mobile' is assigned a value but never used.","'show' is assigned a value but never used.","'page' is assigned a value but never used.","'setPage' is assigned a value but never used.","'success' is assigned a value but never used.","'setSuccess' is assigned a value but never used.","'error' is assigned a value but never used.","'setError' is assigned a value but never used.","'handleClose' is assigned a value but never used.","'handleShow' is assigned a value but never used.","react/jsx-no-duplicate-props","No duplicate props allowed","JSXAttribute","'useEffect' is defined but never used.","'Link' is defined but never used.","'FormControl' is defined but never used.","'Navbar' is defined but never used.","'Alert' is defined but never used.","'Col' is defined but never used.","'Card' is defined but never used.","'Row' is defined but never used.","'Image' is defined but never used.","'Table' is defined but never used.","'user' is assigned a value but never used.","'state' is assigned a value but never used.","'setState' is assigned a value but never used.","no-global-assign","no-unsafe-negation",{"desc":"143","fix":"144"},"Update the dependencies array to be: [getReview]",{"range":"145","text":"146"},[605,607],"[getReview]"] \ No newline at end of file +[{"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\index.js":"1","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\reportWebVitals.js":"2","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Place.js":"3","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Login.js":"4","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\utils\\catchErrors.js":"5","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Signup.js":"6","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\utils\\auth.js":"7","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Paginations.js":"8","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Search.js":"9","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\App.js":"10","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\PrivateRoute.js":"11","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Bookmark.js":"12"},{"size":1267,"mtime":1611500254459,"results":"13","hashOfConfig":"14"},{"size":362,"mtime":499162500000,"results":"15","hashOfConfig":"14"},{"size":1650,"mtime":1611552739016,"results":"16","hashOfConfig":"14"},{"size":3147,"mtime":1611553267391,"results":"17","hashOfConfig":"14"},{"size":405,"mtime":1609915408569,"results":"18","hashOfConfig":"14"},{"size":2995,"mtime":1611489922054,"results":"19","hashOfConfig":"14"},{"size":726,"mtime":1611495738863,"results":"20","hashOfConfig":"14"},{"size":2199,"mtime":1610503781980,"results":"21","hashOfConfig":"14"},{"size":10588,"mtime":1611553924601,"results":"22","hashOfConfig":"14"},{"size":2167,"mtime":1611500202857,"results":"23","hashOfConfig":"14"},{"size":486,"mtime":1611489922054,"results":"24","hashOfConfig":"14"},{"size":2668,"mtime":1611558320008,"results":"25","hashOfConfig":"14"},{"filePath":"26","messages":"27","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"28","usedDeprecatedRules":"29"},"1t9w6go",{"filePath":"30","messages":"31","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"29"},{"filePath":"32","messages":"33","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"34","usedDeprecatedRules":"29"},{"filePath":"35","messages":"36","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"29"},{"filePath":"37","messages":"38","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"29"},{"filePath":"39","messages":"40","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"29"},{"filePath":"41","messages":"42","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"29"},{"filePath":"43","messages":"44","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"29"},{"filePath":"45","messages":"46","errorCount":0,"warningCount":14,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"47","messages":"48","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"49","usedDeprecatedRules":"29"},{"filePath":"50","messages":"51","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"29"},{"filePath":"52","messages":"53","errorCount":0,"warningCount":15,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\index.js",["54"],"import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport App from './App'\r\nimport Search from './Search';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport Signup from './Components/Signup'\r\nimport Login from './Components/Login'\r\nimport PrivateRoute from \"./Components/PrivateRoute\";\r\nimport axios from 'axios'\r\nimport Bookmark from \"./Bookmark\"\r\nimport {\r\n BrowserRouter as Router,\r\n Switch,\r\n Route,\r\n Redirect,\r\n} from \"react-router-dom\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n",["55","56"],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\reportWebVitals.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Place.js",["57","58"],"import axios from 'axios';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { Modal, Container, Row, Button, } from 'react-bootstrap';\r\n\r\nfunction Place(props) {\r\n const [reviews, setReviews] = useState()\r\n const [db, setDb] = useState(false)\r\n const getReview = () => {\r\n axios({ url: `/api/review?keyword=${props.place.name}`, method: 'post', data: { db: db } })\r\n .then(res => {\r\n console.log(\"place res.data\", res.data)\r\n setReviews(res.data)\r\n })\r\n .catch(err => {\r\n console.log(err)\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n getReview();\r\n }, [])\r\n\r\n return (\r\n \r\n \r\n \r\n {props.index + 1}. {props.place.name}\r\n \r\n \r\n \r\n \r\n {Array.isArray(reviews) ? reviews.map((review, index) => {\r\n return (\r\n \r\n {review.title}\r\n
{review.summary}
\r\n
{review.content}
\r\n
\r\n )\r\n })\r\n : \"리뷰가 없습니다.\"}\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default Place;\r\n","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Login.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\utils\\catchErrors.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Signup.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\utils\\auth.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Paginations.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Search.js",["59","60","61","62","63","64","65","66","67","68","69","70","71","72"],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\App.js",["73","74","75","76"],"import React, { useEffect, useState } from 'react';\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport ohuh from './ohuh.PNG'\r\nimport { Container, Row, Form, Image, InputGroup, Button, Col, FormControl, Navbar, Nav } from 'react-bootstrap';\r\nimport { handleLogout, isAuthenticated } from './utils/auth.js'\r\n\r\nfunction App() {\r\n const [state, setState] = useState(false);\r\n const [search, setSearch] = useState(\"\");\r\n const user = isAuthenticated()\r\n\r\n if (state !== false) {\r\n return ;\r\n }\r\n\r\n const handleChange = (e) => {\r\n setSearch(e.target.value);\r\n } //바뀌는 것이 있을때 이벤트 발생\r\n\r\n const handleSubmit = () => {\r\n setState(true);\r\n } //submit 버튼을 누르면 state 값을 true로 바뀐다\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default App;\r\n","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\PrivateRoute.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Bookmark.js",["77","78","79","80","81","82","83","84","85","86","87","88","89","90","91"],{"ruleId":"92","severity":1,"message":"93","line":11,"column":8,"nodeType":"94","messageId":"95","endLine":11,"endColumn":13},{"ruleId":"96","replacedBy":"97"},{"ruleId":"98","replacedBy":"99"},{"ruleId":"92","severity":1,"message":"100","line":7,"column":14,"nodeType":"94","messageId":"95","endLine":7,"endColumn":19},{"ruleId":"101","severity":1,"message":"102","line":21,"column":6,"nodeType":"103","endLine":21,"endColumn":8,"suggestions":"104"},{"ruleId":"92","severity":1,"message":"105","line":5,"column":83,"nodeType":"94","messageId":"95","endLine":5,"endColumn":88},{"ruleId":"92","severity":1,"message":"106","line":7,"column":8,"nodeType":"94","messageId":"95","endLine":7,"endColumn":19},{"ruleId":"92","severity":1,"message":"93","line":9,"column":8,"nodeType":"94","messageId":"95","endLine":9,"endColumn":13},{"ruleId":"92","severity":1,"message":"107","line":22,"column":12,"nodeType":"94","messageId":"95","endLine":22,"endColumn":18},{"ruleId":"92","severity":1,"message":"108","line":23,"column":12,"nodeType":"94","messageId":"95","endLine":23,"endColumn":16},{"ruleId":"92","severity":1,"message":"109","line":24,"column":12,"nodeType":"94","messageId":"95","endLine":24,"endColumn":16},{"ruleId":"92","severity":1,"message":"110","line":24,"column":18,"nodeType":"94","messageId":"95","endLine":24,"endColumn":25},{"ruleId":"92","severity":1,"message":"111","line":25,"column":12,"nodeType":"94","messageId":"95","endLine":25,"endColumn":19},{"ruleId":"92","severity":1,"message":"112","line":25,"column":21,"nodeType":"94","messageId":"95","endLine":25,"endColumn":31},{"ruleId":"92","severity":1,"message":"113","line":26,"column":12,"nodeType":"94","messageId":"95","endLine":26,"endColumn":17},{"ruleId":"92","severity":1,"message":"114","line":26,"column":19,"nodeType":"94","messageId":"95","endLine":26,"endColumn":27},{"ruleId":"92","severity":1,"message":"115","line":28,"column":11,"nodeType":"94","messageId":"95","endLine":28,"endColumn":22},{"ruleId":"92","severity":1,"message":"116","line":29,"column":11,"nodeType":"94","messageId":"95","endLine":29,"endColumn":21},{"ruleId":"117","severity":1,"message":"118","line":99,"column":35,"nodeType":"119","endLine":99,"endColumn":76},{"ruleId":"92","severity":1,"message":"120","line":1,"column":17,"nodeType":"94","messageId":"95","endLine":1,"endColumn":26},{"ruleId":"92","severity":1,"message":"121","line":2,"column":10,"nodeType":"94","messageId":"95","endLine":2,"endColumn":14},{"ruleId":"92","severity":1,"message":"122","line":4,"column":64,"nodeType":"94","messageId":"95","endLine":4,"endColumn":75},{"ruleId":"92","severity":1,"message":"123","line":4,"column":77,"nodeType":"94","messageId":"95","endLine":4,"endColumn":83},{"ruleId":"92","severity":1,"message":"120","line":1,"column":27,"nodeType":"94","messageId":"95","endLine":1,"endColumn":36},{"ruleId":"92","severity":1,"message":"124","line":2,"column":10,"nodeType":"94","messageId":"95","endLine":2,"endColumn":15},{"ruleId":"92","severity":1,"message":"125","line":2,"column":17,"nodeType":"94","messageId":"95","endLine":2,"endColumn":20},{"ruleId":"92","severity":1,"message":"126","line":2,"column":22,"nodeType":"94","messageId":"95","endLine":2,"endColumn":26},{"ruleId":"92","severity":1,"message":"127","line":2,"column":45,"nodeType":"94","messageId":"95","endLine":2,"endColumn":48},{"ruleId":"92","severity":1,"message":"128","line":2,"column":82,"nodeType":"94","messageId":"95","endLine":2,"endColumn":87},{"ruleId":"92","severity":1,"message":"129","line":2,"column":89,"nodeType":"94","messageId":"95","endLine":2,"endColumn":94},{"ruleId":"92","severity":1,"message":"130","line":13,"column":7,"nodeType":"94","messageId":"95","endLine":13,"endColumn":11},{"ruleId":"92","severity":1,"message":"110","line":16,"column":18,"nodeType":"94","messageId":"95","endLine":16,"endColumn":25},{"ruleId":"92","severity":1,"message":"113","line":17,"column":12,"nodeType":"94","messageId":"95","endLine":17,"endColumn":17},{"ruleId":"92","severity":1,"message":"111","line":18,"column":12,"nodeType":"94","messageId":"95","endLine":18,"endColumn":19},{"ruleId":"92","severity":1,"message":"112","line":18,"column":21,"nodeType":"94","messageId":"95","endLine":18,"endColumn":31},{"ruleId":"92","severity":1,"message":"131","line":19,"column":12,"nodeType":"94","messageId":"95","endLine":19,"endColumn":17},{"ruleId":"92","severity":1,"message":"132","line":19,"column":19,"nodeType":"94","messageId":"95","endLine":19,"endColumn":27},{"ruleId":"92","severity":1,"message":"130","line":21,"column":11,"nodeType":"94","messageId":"95","endLine":21,"endColumn":15},"no-unused-vars","'axios' is defined but never used.","Identifier","unusedVar","no-native-reassign",["133"],"no-negated-in-lhs",["134"],"'setDb' is assigned a value but never used.","react-hooks/exhaustive-deps","React Hook useEffect has a missing dependency: 'getReview'. Either include it or remove the dependency array.","ArrayExpression",["135"],"'Modal' is defined but never used.","'catchErrors' is defined but never used.","'mobile' is assigned a value but never used.","'show' is assigned a value but never used.","'page' is assigned a value but never used.","'setPage' is assigned a value but never used.","'success' is assigned a value but never used.","'setSuccess' is assigned a value but never used.","'error' is assigned a value but never used.","'setError' is assigned a value but never used.","'handleClose' is assigned a value but never used.","'handleShow' is assigned a value but never used.","react/jsx-no-duplicate-props","No duplicate props allowed","JSXAttribute","'useEffect' is defined but never used.","'Link' is defined but never used.","'FormControl' is defined but never used.","'Navbar' is defined but never used.","'Alert' is defined but never used.","'Col' is defined but never used.","'Card' is defined but never used.","'Row' is defined but never used.","'Image' is defined but never used.","'Table' is defined but never used.","'user' is assigned a value but never used.","'state' is assigned a value but never used.","'setState' is assigned a value but never used.","no-global-assign","no-unsafe-negation",{"desc":"136","fix":"137"},"Update the dependencies array to be: [getReview]",{"range":"138","text":"139"},[605,607],"[getReview]"] \ No newline at end of file diff --git a/client/src/Bookmark.js b/client/src/Bookmark.js index 02f6f0bab791be73dbdcf8f98f58e4ff4f27720b..cbb4504470337bbb3a4666895e16d94c7bf058a6 100644 --- a/client/src/Bookmark.js +++ b/client/src/Bookmark.js @@ -6,8 +6,8 @@ import { isAuthenticated } from './utils/auth' const INIT_PAGE = { - bookmark: ['성산일출봉', '제주도', '한라산', '주상절리', '오설록 티 뮤지엄'], - + bookmark: ['성산일출봉', '제주도', '한라산', '주상절리', '오설록 티 뮤지엄',] + } const user = isAuthenticated() @@ -22,16 +22,17 @@ function Bookmark() { const userId = localStorage.getItem('loginStatus') - async function getBookmark( ) { + async function getBookmark() { try { setError('') - console.log(page) + console.log(page.bookmark) + const bookmark = page.bookmark console.log(userId) - await axios.post(`/api/users/bookmark`, {bookmark: page, userId: userId}) - + const response = await axios.put(`/api/users/bookmark`, { bookmark: bookmark, userId: userId }) + console.log(response.data) } catch (error) { catchErrors(error, setError) - } + } } // async function handleSubmit(e){ @@ -60,15 +61,15 @@ function Bookmark() { -
- - {page.bookmark[0]} - {page.bookmark[1]} - {page.bookmark[2]} - {page.bookmark[3]} - {page.bookmark[4]} - -
+
+ + {page.bookmark[0]} + {page.bookmark[1]} + {page.bookmark[2]} + {page.bookmark[3]} + {page.bookmark[4]} + +
) } diff --git a/client/src/Pages/Search.js b/client/src/Pages/Search.js deleted file mode 100644 index e552878d14e13be99614921935d039ba486598f0..0000000000000000000000000000000000000000 --- a/client/src/Pages/Search.js +++ /dev/null @@ -1,186 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import { Link, Redirect } from 'react-router-dom'; -import ohuh from '../ohuh-sm.PNG'; -import Place from '../Components/Place'; -import { Container, Form, Row, Col, Card, Image, InputGroup, FormControl, Button } from 'react-bootstrap'; -import Paginations from '../Components/Paginations'; -import axios from 'axios'; -import queryString from 'query-string' - -function Search(props) { - const endPage = 10; - const [state, setState] = useState(false); - const [index, setIndex] = useState(1); - const [showSet, setShowSet] = useState([false, false, false, false]); - const [search, setSearch] = useState(queryString.parse(props.location.search).keyword); - const [mobile, setMobile] = useState(); - const [place, setPlace] = useState([{ name: "", category: "", address: "" }]) - const [imgUrl, setImgUrl] = useState([]) - const [association, setAssociation] = useState([]) - - // console.log("search###############", search) - const getPlace = () => { - axios.get(`/api/search/places?keyword=${search}`) - .then(res => { - console.log("places=", res.data) - setPlace(res.data) - }) - .catch(err => { - console.log('search.places 에러 발생', err) - }) - } - - const getImg = () => { - axios.get(`/api/search/imges?keyword=${search}`) - .then(res => { - console.log("images=", res.data) - setImgUrl(res.data) - }) - .catch(err => { - console.log('search.images 에러 발생', err) - }) - } - - - - const getAssociation = () => { - axios.get(`/api/search/association?keyword=${search}`) - .then(res => { - console.log("Associations = ", res.data) - setAssociation(res.data) - }) - .catch(err => { - console.log("search.associations 에러 발생", err) - }) - } - - - - useEffect(() => { - getPlace() - getImg() - getAssociation() - if (window.innerWidth < 960) { - setMobile(true) - } else { - setMobile(false) - } - - if (state) { - props.history.push('/search?keyword=' + search) - setState(false) - console.log("search야", search) - } - }, [search]); - - - const places = [{ - name: "한라산", - address: "제주 서귀포시 토평동 산15-1", - img: "https://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/KOCIS_Halla_Mountain_in_Jeju-do_%286387785543%29.jpg/269px-KOCIS_Halla_Mountain_in_Jeju-do_%286387785543%29.jpg?size=200x200", - }, { - name: "성산일출봉(sungsan)", - address: "제주 서귀포시 성산읍 성산리 1", - img: "https://www.jeju.go.kr/pub/site/geopark/images/sub/sub03/02%EC%A7%80%EC%A7%88%EB%A7%88%EC%9D%84%EC%9D%B4%EC%95%BC%EA%B8%B0/%EC%A7%80%EC%A7%88%EB%A7%88%EC%9D%84/%EC%A7%80%EC%A7%88%EB%A7%88%EC%9D%84_%EC%84%B1%EC%82%B0%EC%9D%BC%EC%B6%9C%EB%B4%89/1412402261.jpg?400/400", - }, { - name: "해녀의 집(haenyeo)", - address: "제주 서귀포시 성산읍 한도로 141-13지번오조리 3 오조해녀의집", - img: "https://mblogthumb-phinf.pstatic.net/MjAxNjExMTdfMTc0/MDAxNDc5MzU3ODU0ODQy.KZYXCjzsXT3rCsE4HXBfxyCg2buvluBvN_7NxVp7BSwg.loJc89d8JjGXdNCn-4yMd7aMWPjfrZn21TI9Hyzemkog.JPEG.icocam11/20161010_100205.jpg?type=w800", - }, { - name: "오설록 티 뮤지엄(osulloc)", - address: "제주 서귀포시 안덕면 신화역사로 15 오설록지번서광리 1235-1 오설록", - img: "https://cdnweb01.wikitree.co.kr/webdata/editor/202007/01/img_20200701143323_2ced7627.webp", - }, { - name: "오설록 티 뮤지엄(osulloc)", - address: "제주 서귀포시 안덕면 신화역사로 15 오설록지번서광리 1235-1 오설록", - img: "https://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/KOCIS_Halla_Mountain_in_Jeju-do_%286387785543%29.jpg/269px-KOCIS_Halla_Mountain_in_Jeju-do_%286387785543%29.jpg", - }] - - if (state !== false) { - // console.log(queryString.parse(props.location.search)) - // = {keyword:search} - // return ; - // history.pushState(null, null, "?"+queryParams.toString()); - // return ; - } - - const handlePage = (num) => { - setIndex(num); - } - - - const handleChange = (e) => { - setSearch(e.target.value); - } - - const handleSubmit = (e) => { - // e.preventDefault() - setState(true); - } - - function paginate(items, pageNumber, itemNumber) { - const page = []; - const startIndex = (pageNumber - 1) * itemNumber - for (var i = 0; i < itemNumber; i++) { - page.push(items[(startIndex + i)]) - } - return page - } - - const pagePlace = paginate(association, index, association.length) - - let time = new Date() - - return ( - - - -
- - - - - - -
-
- {time.toLocaleString()} - - {pagePlace.map((place, index) => { - return ( - - - {place.name} - - - - {place.address} - - setShowSet([false, false, false, false])} /> - - - - ) - })} - - - - -
- ); -} - -export default Search; \ No newline at end of file diff --git a/server/controllers/user.controller.js b/server/controllers/user.controller.js index 49c63ae9df944eac32a99438e6173d013003aa49..4434be73fe0d361fbf320947c92cf52da34281de 100644 --- a/server/controllers/user.controller.js +++ b/server/controllers/user.controller.js @@ -5,21 +5,21 @@ import bcrypt from "bcryptjs"; const signup = async (req, res) => { const { name, email, password } = req.body //구조분해해서 하나씩 - console.log(name, email, password) + console.log(name, email, password) try { //적어도 3개 맥시멈 10개 가 아니면 - if (!isLength(name, {min: 3, max: 10})) { + if (!isLength(name, { min: 3, max: 10 })) { return res.status(422).send('이름은 3-10자 사이입니다') - }else if (!isLength(password, {min: 6})) { + } else if (!isLength(password, { min: 6 })) { return res.status(422).send('비밀번호는 6자 이상입니다') - }else if (!isEmail(email)) { + } else if (!isEmail(email)) { return res.status(422).send('유효하지 않은 이메일 형식입니다') } - const user = await User.findOne({email}) + const user = await User.findOne({ email }) if (user) { return res.status(422).send(`${email}이 이미 사용중입니다`) } const hash = await bcrypt.hash(password, 10) - const newUser = await new User ({ + const newUser = await new User({ name, email, password: hash @@ -31,9 +31,9 @@ const signup = async (req, res) => { res.status(500).send('회원가입 에러') } } - + const userById = async (req, res, next, id) => { - try { + try { const user = await User.findById(id) if (!user) { res.status(404).send('사용자를 찾을 수 없습니다') @@ -47,14 +47,21 @@ const userById = async (req, res, next, id) => { } const getBookmark = async (req, res) => { - const {page, userId} = req.body - req.body = page - console.log('page:', page) - req.user = userId - console.log('userId:',userId) - await User.updateOne({'userId': userId}, {'bookmark': page}) - const updatedUser = await user.save() - res.json(updatedUser) + const { bookmark, userId } = req.body + console.log(bookmark, userId) + // const bookpage = req.body.bookmark + console.log('page:', bookmark) + // const user = req.user.userId + console.log('userId:', userId) + const updatedUser = await User.findOne({ _id: userId }) + if (updatedUser) { + updatedUser.bookmark = bookmark + updatedUser.save() + } + // const updatedUser = await new User({ bookmark }).save() + // res.json(updatedUser) + console.log(updatedUser) + res.send(updatedUser) } // const putBookmark = async (req, res) => { @@ -78,4 +85,4 @@ const getBookmark = async (req, res) => { // } // } -export default { signup, userById, getBookmark} \ No newline at end of file +export default { signup, userById, getBookmark } \ No newline at end of file diff --git a/server/routes/user.routes.js b/server/routes/user.routes.js index e02fb0b960f1cba773b23153ec22ca1888813ccd..5e1338093d8626f95176777658f5e98afe718a74 100644 --- a/server/routes/user.routes.js +++ b/server/routes/user.routes.js @@ -7,7 +7,7 @@ router.route('/api/users/signup') .post(userCtrl.signup) router.route('/api/users/bookmark') - .post(userCtrl.getBookmark) + .put(userCtrl.getBookmark) // .get(userCtrl.putBookmark) router.param('userId', userCtrl.userById)