Commit d0ed12bb authored by Lee SeoYeon's avatar Lee SeoYeon
Browse files

Merge remote-tracking branch 'origin/BAE' into lsy

parents 5e8130f8 1b46e125
[{"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\\Components\\PrivateRoute.js":"9","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Bookmark.js":"10","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Pages\\Search.js":"11","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Pages\\App.js":"12"},{"size":1252,"mtime":1611703918328,"results":"13","hashOfConfig":"14"},{"size":362,"mtime":499162500000,"results":"15","hashOfConfig":"14"},{"size":1710,"mtime":1611725081816,"results":"16","hashOfConfig":"14"},{"size":3147,"mtime":1611553267391,"results":"17","hashOfConfig":"14"},{"size":405,"mtime":1609915408569,"results":"18","hashOfConfig":"14"},{"size":2959,"mtime":1611699671429,"results":"19","hashOfConfig":"14"},{"size":723,"mtime":1611670762295,"results":"20","hashOfConfig":"14"},{"size":3725,"mtime":1611729247206,"results":"21","hashOfConfig":"14"},{"size":438,"mtime":1611699613873,"results":"22","hashOfConfig":"14"},{"size":5395,"mtime":1611732536752,"results":"23","hashOfConfig":"14"},{"size":11044,"mtime":1611732579543,"results":"24","hashOfConfig":"14"},{"size":2131,"mtime":1611702813920,"results":"25","hashOfConfig":"14"},{"filePath":"26","messages":"27","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"28"},"1t9w6go",{"filePath":"29","messages":"30","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"28"},{"filePath":"31","messages":"32","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"33","usedDeprecatedRules":"28"},{"filePath":"34","messages":"35","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"28"},{"filePath":"36","messages":"37","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"28"},{"filePath":"38","messages":"39","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"28"},{"filePath":"40","messages":"41","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"28"},{"filePath":"42","messages":"43","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"44","messages":"45","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"28"},{"filePath":"46","messages":"47","errorCount":0,"warningCount":12,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"48","messages":"49","errorCount":0,"warningCount":13,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"50","messages":"51","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"28"},"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\index.js",[],["52","53"],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\reportWebVitals.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Place.js",["54"],"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.review)\r\n setDb(res.data.db)\r\n console.log(db)\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 <Modal {...props}\r\n size=\"xl\"\r\n keyboard=\"true\"\r\n variant=\"backdrop.in\"\r\n aria-labelledby=\"example-modal-sizes-title-lg\">\r\n <Modal.Header closeButton>\r\n <Modal.Title id=\"contained-modal-title-vcenter\" style={{ fontSize: '40px' }}>\r\n {props.index + 1}. {props.place.name}\r\n </Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body className=\"show-grid\">\r\n <Container style={{ fontSize: '40px' }}>\r\n {Array.isArray(reviews) ? reviews.map((review, index) => {\r\n return (\r\n <Row className=\"mt-4\">\r\n <a href={review.link}>{review.title}</a>\r\n <div>{review.summary}</div>\r\n <div>{review.content}</div>\r\n </Row>\r\n )\r\n })\r\n : \"리뷰가 없습니다.\"}\r\n </Container>\r\n\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button block onClick={props.onHide}>Close</Button>\r\n </Modal.Footer>\r\n </Modal>\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\\Components\\PrivateRoute.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Bookmark.js",["55","56","57","58","59","60","61","62","63","64","65","66"],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Pages\\Search.js",["67","68","69","70","71","72","73","74","75","76","77","78","79"],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Pages\\App.js",[],{"ruleId":"80","replacedBy":"81"},{"ruleId":"82","replacedBy":"83"},{"ruleId":"84","severity":1,"message":"85","line":23,"column":6,"nodeType":"86","endLine":23,"endColumn":8,"suggestions":"87"},{"ruleId":"88","severity":1,"message":"89","line":2,"column":10,"nodeType":"90","messageId":"91","endLine":2,"endColumn":15},{"ruleId":"88","severity":1,"message":"92","line":2,"column":39,"nodeType":"90","messageId":"91","endLine":2,"endColumn":43},{"ruleId":"88","severity":1,"message":"93","line":7,"column":8,"nodeType":"90","messageId":"91","endLine":7,"endColumn":13},{"ruleId":"88","severity":1,"message":"94","line":16,"column":12,"nodeType":"90","messageId":"91","endLine":16,"endColumn":16},{"ruleId":"88","severity":1,"message":"95","line":16,"column":18,"nodeType":"90","messageId":"91","endLine":16,"endColumn":25},{"ruleId":"88","severity":1,"message":"96","line":17,"column":12,"nodeType":"90","messageId":"91","endLine":17,"endColumn":17},{"ruleId":"88","severity":1,"message":"97","line":17,"column":19,"nodeType":"90","messageId":"91","endLine":17,"endColumn":27},{"ruleId":"88","severity":1,"message":"98","line":18,"column":12,"nodeType":"90","messageId":"91","endLine":18,"endColumn":17},{"ruleId":"88","severity":1,"message":"99","line":19,"column":12,"nodeType":"90","messageId":"91","endLine":19,"endColumn":17},{"ruleId":"88","severity":1,"message":"100","line":19,"column":19,"nodeType":"90","messageId":"91","endLine":19,"endColumn":27},{"ruleId":"88","severity":1,"message":"101","line":22,"column":12,"nodeType":"90","messageId":"91","endLine":22,"endColumn":19},{"ruleId":"84","severity":1,"message":"102","line":64,"column":8,"nodeType":"86","endLine":64,"endColumn":10,"suggestions":"103"},{"ruleId":"88","severity":1,"message":"104","line":2,"column":16,"nodeType":"90","messageId":"91","endLine":2,"endColumn":24},{"ruleId":"88","severity":1,"message":"105","line":5,"column":83,"nodeType":"90","messageId":"91","endLine":5,"endColumn":86},{"ruleId":"88","severity":1,"message":"106","line":21,"column":12,"nodeType":"90","messageId":"91","endLine":21,"endColumn":18},{"ruleId":"88","severity":1,"message":"107","line":21,"column":20,"nodeType":"90","messageId":"91","endLine":21,"endColumn":29},{"ruleId":"88","severity":1,"message":"98","line":25,"column":12,"nodeType":"90","messageId":"91","endLine":25,"endColumn":17},{"ruleId":"88","severity":1,"message":"108","line":27,"column":20,"nodeType":"90","messageId":"91","endLine":27,"endColumn":31},{"ruleId":"88","severity":1,"message":"109","line":29,"column":19,"nodeType":"90","messageId":"91","endLine":29,"endColumn":27},{"ruleId":"84","severity":1,"message":"110","line":51,"column":8,"nodeType":"86","endLine":51,"endColumn":10,"suggestions":"111"},{"ruleId":"84","severity":1,"message":"112","line":64,"column":8,"nodeType":"86","endLine":64,"endColumn":28,"suggestions":"113"},{"ruleId":"84","severity":1,"message":"114","line":79,"column":8,"nodeType":"86","endLine":79,"endColumn":15,"suggestions":"115"},{"ruleId":"88","severity":1,"message":"116","line":94,"column":11,"nodeType":"90","messageId":"91","endLine":94,"endColumn":17},{"ruleId":"88","severity":1,"message":"117","line":184,"column":9,"nodeType":"90","messageId":"91","endLine":184,"endColumn":13},{"ruleId":"118","severity":1,"message":"119","line":189,"column":35,"nodeType":"120","endLine":189,"endColumn":76},"no-native-reassign",["121"],"no-negated-in-lhs",["122"],"react-hooks/exhaustive-deps","React Hook useEffect has a missing dependency: 'getReview'. Either include it or remove the dependency array.","ArrayExpression",["123"],"no-unused-vars","'Alert' is defined but never used.","Identifier","unusedVar","'Form' is defined but never used.","'Place' is defined but never used.","'page' is assigned a value but never used.","'setPage' is assigned a value but never used.","'index' is assigned a value but never used.","'setIndex' is assigned a value but never used.","'error' is assigned a value but never used.","'state' is assigned a value but never used.","'setState' is assigned a value but never used.","'showSet' is assigned a value but never used.","React Hook useEffect has a missing dependency: 'getBookmark'. Either include it or remove the dependency array.",["124"],"'Redirect' is defined but never used.","'Nav' is defined but never used.","'mobile' is assigned a value but never used.","'setMobile' is assigned a value but never used.","'getBookmark' is defined but never used.","'response' is assigned a value but never used.","React Hook useEffect has a missing dependency: 'getAssociation'. Either include it or remove the dependency array.",["125"],"React Hook useEffect has missing dependencies: 'endPage' and 'pagePlace'. Either include them or remove the dependency array.",["126"],"React Hook useEffect has missing dependencies: 'getAssociation', 'props.history', and 'search'. Either include them or remove the dependency array.",["127"],"'places' is assigned a value but never used.","'time' is assigned a value but never used.","react/jsx-no-duplicate-props","No duplicate props allowed","JSXAttribute","no-global-assign","no-unsafe-negation",{"desc":"128","fix":"129"},{"desc":"130","fix":"131"},{"desc":"132","fix":"133"},{"desc":"134","fix":"135"},{"desc":"136","fix":"137"},"Update the dependencies array to be: [getReview]",{"range":"138","text":"139"},"Update the dependencies array to be: [getBookmark]",{"range":"140","text":"141"},"Update the dependencies array to be: [getAssociation]",{"range":"142","text":"143"},"Update the dependencies array to be: [association, endPage, index, pagePlace]",{"range":"144","text":"145"},"Update the dependencies array to be: [getAssociation, props.history, search, state]",{"range":"146","text":"147"},[665,667],"[getReview]",[2225,2227],"[getBookmark]",[2018,2020],"[getAssociation]",[2418,2438],"[association, endPage, index, pagePlace]",[3017,3024],"[getAssociation, props.history, search, state]"]
\ 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\\Components\\PrivateRoute.js":"9","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Bookmark.js":"10","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Pages\\Search.js":"11","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Pages\\App.js":"12"},{"size":1252,"mtime":1611703918328,"results":"13","hashOfConfig":"14"},{"size":362,"mtime":499162500000,"results":"15","hashOfConfig":"14"},{"size":1684,"mtime":1611733806708,"results":"16","hashOfConfig":"14"},{"size":3147,"mtime":1611553267391,"results":"17","hashOfConfig":"14"},{"size":405,"mtime":1609915408569,"results":"18","hashOfConfig":"14"},{"size":2959,"mtime":1611699671429,"results":"19","hashOfConfig":"14"},{"size":723,"mtime":1611670762295,"results":"20","hashOfConfig":"14"},{"size":3725,"mtime":1611729247206,"results":"21","hashOfConfig":"14"},{"size":438,"mtime":1611699613873,"results":"22","hashOfConfig":"14"},{"size":5395,"mtime":1611732536752,"results":"23","hashOfConfig":"14"},{"size":10940,"mtime":1611733806665,"results":"24","hashOfConfig":"14"},{"size":5379,"mtime":1611733806683,"results":"25","hashOfConfig":"14"},{"filePath":"26","messages":"27","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"28"},"1t9w6go",{"filePath":"29","messages":"30","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"28"},{"filePath":"31","messages":"32","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"33","usedDeprecatedRules":"28"},{"filePath":"34","messages":"35","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"28"},{"filePath":"36","messages":"37","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"28"},{"filePath":"38","messages":"39","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"28"},{"filePath":"40","messages":"41","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"28"},{"filePath":"42","messages":"43","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"44","messages":"45","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"28"},{"filePath":"46","messages":"47","errorCount":0,"warningCount":12,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"48","messages":"49","errorCount":0,"warningCount":13,"fixableErrorCount":0,"fixableWarningCount":0,"source":"50","usedDeprecatedRules":"28"},{"filePath":"51","messages":"52","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\index.js",[],["53","54"],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\reportWebVitals.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Components\\Place.js",["55"],"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.review)\r\n setDb(res.data.db)\r\n console.log(db)\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 <Modal {...props}\r\n size=\"xl\"\r\n keyboard=\"true\"\r\n variant=\"backdrop.in\"\r\n aria-labelledby=\"example-modal-sizes-title-lg\">\r\n <Modal.Header closeButton>\r\n <Modal.Title id=\"contained-modal-title-vcenter\" style={{ fontSize: '40px' }}>\r\n {props.index + 1}. {props.place.name}\r\n </Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body className=\"show-grid\">\r\n <Container style={{ fontSize: '40px' }}>\r\n {Array.isArray(reviews) ? reviews.map((review, index) => {\r\n return (\r\n <Row className=\"mt-4\">\r\n <a href={review.link}>{review.title}</a>\r\n <div>{review.summary}</div>\r\n <div>{review.content}</div>\r\n </Row>\r\n )\r\n })\r\n : \"리뷰가 없습니다.\"}\r\n </Container>\r\n\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button block onClick={props.onHide}>Close</Button>\r\n </Modal.Footer>\r\n </Modal>\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\\Components\\PrivateRoute.js",[],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Bookmark.js",["56","57","58","59","60","61","62","63","64","65","66","67"],"C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Pages\\Search.js",["68","69","70","71","72","73","74","75","76","77","78","79","80"],"import React, { useState, useEffect } from 'react';\r\nimport { Link } 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, Nav } from 'react-bootstrap';\r\nimport Paginations from '../Components/Paginations';\r\nimport axios from 'axios';\r\nimport queryString from 'query-string'\r\nimport * as Icon from 'react-bootstrap-icons';\r\nimport { isAuthenticated } from '../utils/auth';\r\nimport catchErrors from '../utils/catchErrors'\r\n\r\nfunction Search(props) {\r\n\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(queryString.parse(props.location.search).keyword);\r\n const [bookmark, setBookmark] = useState([false, false, false, false])\r\n const user = isAuthenticated()\r\n const [mobile, setMobile] = useState();\r\n const [association, setAssociation] = useState([{ name: \" \", address: \" \", img: \" \" }])\r\n const [pagePlace, setPagePlace] = useState([{ name: \" \", address: \" \", img: \" \" }, { name: \" \", address: \" \", img: \" \" }])\r\n const [endPage, setEndPage] = useState(1)\r\n const [error, setError] = useState('')\r\n\r\n async function getBookmark() {\r\n try {\r\n const response = await axios.get(`/api/users/bookmark?ID=${user}`)\r\n // setBookmark(response.data.bookmark)\r\n } catch (error) {\r\n catchErrors(error, setError)\r\n }\r\n }\r\n\r\n const getAssociation = () => {\r\n axios.get(`/api/search/association?keyword=${search}`)\r\n .then(res => {\r\n console.log(\"Associations = \", res.data)\r\n setAssociation(res.data)\r\n })\r\n .catch(err => {\r\n console.log(\"search.associations 에러 발생\", err)\r\n })\r\n }\r\n\r\n\r\n\r\n useEffect(() => {\r\n getAssociation()\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (association.length < 3) {\r\n setPagePlace(paginate(association, index, association.length))\r\n }\r\n else {\r\n setPagePlace(paginate(association, index, 4))\r\n }\r\n setEndPage(Math.floor((association.length / 4)))\r\n\r\n }, [association, index])\r\n\r\n useEffect(() => {\r\n getAssociation()\r\n if (state) {\r\n // window.location.reload()\r\n // return <Redirect to={{\r\n // pathname: `/search?keyword=${search}`,\r\n // state: { id: search },\r\n // }} />;\r\n props.history.push('/search?keyword=' + search)\r\n setState(false)\r\n // console.log(\"search야\", search)\r\n } window.addEventListener(\"scroll\", infiniteScroll);\r\n return () => { window.removeEventListener(\"scroll\", infiniteScroll); }\r\n }, [state]);\r\n\r\n const infiniteScroll = () => {\r\n const { documentElement, body } = document;\r\n const scrollHeight = Math.max(documentElement.scrollHeight, body.scrollHeight);\r\n const scrollTop = Math.max(documentElement.scrollTop, body.scrollTop);\r\n const clientHeight = documentElement.clientHeight;\r\n if (scrollTop + clientHeight >= scrollHeight) {\r\n // getReview();\r\n console.log(\"더불러\")\r\n }\r\n console.log(scrollHeight, scrollTop, clientHeight)\r\n }\r\n\r\n\r\n const places = [{\r\n name: \"한라산\",\r\n address: \"제주 서귀포시 토평동 산15-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?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 // console.log(queryString.parse(props.location.search))\r\n // = {keyword:search}\r\n // return <Redirect to={{\r\n // pathname: `/search?keyword=${search}`,\r\n // state: { id: search },\r\n // }} />;\r\n // history.pushState(null, null, \"?\"+queryParams.toString());\r\n // return <Redirect to={`/search?keyword=${search}`} />;\r\n }\r\n\r\n const handlePage = (num) => {\r\n setIndex(num);\r\n console.log(\"pagenation num\", num)\r\n console.log(index)\r\n }\r\n\r\n\r\n const handleChange = (e) => {\r\n setSearch(e.target.value);\r\n }\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault()\r\n setState(true)\r\n setIndex(1)\r\n }\r\n\r\n function paginate(items, pageNumber, itemNumber) {\r\n const page = [];\r\n const startIndex = (pageNumber - 1) * itemNumber\r\n for (var i = 0; i < itemNumber; i++) {\r\n\r\n page.push(items[(startIndex + i)])\r\n }\r\n console.log(\"뿌릴 data22222222222222222\", page)\r\n return page\r\n }\r\n //usestate 쓰거나 한번에 useeffect에 넣기\r\n\r\n async function handlebookmark(index) {\r\n if (!bookmark[index]) {\r\n console.log(pagePlace[index])\r\n try {\r\n const response = await axios.put(`/api/users/bookmark?ID=${user}&place=${pagePlace[index]._id}`)\r\n alert(response.data, '북마크가 저장되었습니다.')\r\n const showArr = bookmark\r\n showArr[index] = true\r\n setBookmark(showArr)\r\n console.log(\"bookmark=\", bookmark) \r\n } catch (error) {\r\n catchErrors(error, setError)\r\n }\r\n } else {\r\n try {\r\n const response = await axios.delete(`/api/users/bookmark?ID=${user}&place=${pagePlace[index]._id}`)\r\n alert(response.data, '저장된 북마크가 삭제되었습니다.')\r\n const showArr = bookmark\r\n showArr[index] = false\r\n setBookmark(showArr)\r\n console.log(\"bookmark=\", bookmark)\r\n } catch (error) {\r\n catchErrors(error, setError)\r\n }\r\n }\r\n }\r\n\r\n\r\n let time = new Date()\r\n\r\n return (\r\n <Container >\r\n <Link to=\"/\" className=\"d-flex justify-content-center\"><Image src={ohuh} /></Link>\r\n <Row className=\"mb-2\" className=\"d-flex justify-content-center\">\r\n <Form style={{ width: \"90vw\" }} onSubmit={handleSubmit}>\r\n <InputGroup size=\"lg\">\r\n <FormControl\r\n placeholder=\"검색어를 입력하세요.\"\r\n value={search}\r\n aria-label=\"Large\"\r\n aria-describedby=\"inputGroup-sizing-sm\"\r\n onChange={handleChange}\r\n />\r\n <InputGroup.Append>\r\n <Button type=\"submit\" variant=\"outline-secondary\" >검색</Button>\r\n </InputGroup.Append>\r\n </InputGroup>\r\n </Form>\r\n </Row>\r\n {/* {time.toLocaleString()} */}\r\n <Row className=\"d-flex flex-wrap\">\r\n\r\n {console.log(\"#####################33\", pagePlace)}\r\n {pagePlace.map((place, index) => {\r\n return (\r\n <Col key={index} md={6} >\r\n <Card align=\"center\" border=\"info\" style={{ margin: \"3%\" }}>\r\n\r\n <Card.Title className=\"d-flex justify-content-center\" style={{ margin: \"3%\", fontSize: '200%', fontWeight: 'bold' }} >{place.name}\r\n {user ?\r\n <Button\r\n variant={bookmark[index] ? \"primary\" : \"light\"}\r\n onClick={() => handlebookmark(index, place)}>\r\n <Icon.BookmarkStarFill size={35} />\r\n {console.log(\"bookmark\", bookmark)}\r\n {console.log(\"bookmark[index]\", bookmark[index])}</Button> : null}\r\n </Card.Title>\r\n <Card.Img variant=\"top\" style={{ padding: \"5%\", width: \"100%\", height: \"340px\" }} src={place.img} />\r\n <Card.Body >\r\n <Card.Text style={{ overflow: 'auto', fontSize: '25px', width: '100%', height: \"80px\" }} >\r\n {place.address} </Card.Text>\r\n <Button variant=\"info\" onClick={() => {\r\n const showArr = [false, false, false, false]\r\n showArr[index] = true\r\n setShowSet(showArr)\r\n }}>{place.name} 자세히 살펴보기</Button>\r\n <Place place={place} index={index} show={showSet[index]} onHide={() => setShowSet([false, false, false, false])} />\r\n </Card.Body>\r\n </Card>\r\n </Col>\r\n )\r\n })}\r\n\r\n\r\n </Row>\r\n <Row className=\"mt-2 d-flex justify-content-center\">\r\n <Paginations index={index} endPage={endPage} handlePage={handlePage}></Paginations>\r\n </Row>\r\n </Container >\r\n );\r\n}\r\n\r\nexport default Search;\r\n","C:\\Users\\hello\\Desktop\\project\\search-page\\client\\src\\Pages\\App.js",["81"],{"ruleId":"82","replacedBy":"83"},{"ruleId":"84","replacedBy":"85"},{"ruleId":"86","severity":1,"message":"87","line":23,"column":6,"nodeType":"88","endLine":23,"endColumn":8,"suggestions":"89"},{"ruleId":"90","severity":1,"message":"91","line":2,"column":10,"nodeType":"92","messageId":"93","endLine":2,"endColumn":15},{"ruleId":"90","severity":1,"message":"94","line":2,"column":39,"nodeType":"92","messageId":"93","endLine":2,"endColumn":43},{"ruleId":"90","severity":1,"message":"95","line":7,"column":8,"nodeType":"92","messageId":"93","endLine":7,"endColumn":13},{"ruleId":"90","severity":1,"message":"96","line":16,"column":12,"nodeType":"92","messageId":"93","endLine":16,"endColumn":16},{"ruleId":"90","severity":1,"message":"97","line":16,"column":18,"nodeType":"92","messageId":"93","endLine":16,"endColumn":25},{"ruleId":"90","severity":1,"message":"98","line":17,"column":12,"nodeType":"92","messageId":"93","endLine":17,"endColumn":17},{"ruleId":"90","severity":1,"message":"99","line":17,"column":19,"nodeType":"92","messageId":"93","endLine":17,"endColumn":27},{"ruleId":"90","severity":1,"message":"100","line":18,"column":12,"nodeType":"92","messageId":"93","endLine":18,"endColumn":17},{"ruleId":"90","severity":1,"message":"101","line":19,"column":12,"nodeType":"92","messageId":"93","endLine":19,"endColumn":17},{"ruleId":"90","severity":1,"message":"102","line":19,"column":19,"nodeType":"92","messageId":"93","endLine":19,"endColumn":27},{"ruleId":"90","severity":1,"message":"103","line":22,"column":12,"nodeType":"92","messageId":"93","endLine":22,"endColumn":19},{"ruleId":"86","severity":1,"message":"104","line":64,"column":8,"nodeType":"88","endLine":64,"endColumn":10,"suggestions":"105"},{"ruleId":"90","severity":1,"message":"106","line":2,"column":16,"nodeType":"92","messageId":"93","endLine":2,"endColumn":24},{"ruleId":"90","severity":1,"message":"107","line":5,"column":83,"nodeType":"92","messageId":"93","endLine":5,"endColumn":86},{"ruleId":"90","severity":1,"message":"108","line":21,"column":12,"nodeType":"92","messageId":"93","endLine":21,"endColumn":18},{"ruleId":"90","severity":1,"message":"109","line":21,"column":20,"nodeType":"92","messageId":"93","endLine":21,"endColumn":29},{"ruleId":"90","severity":1,"message":"100","line":25,"column":12,"nodeType":"92","messageId":"93","endLine":25,"endColumn":17},{"ruleId":"90","severity":1,"message":"110","line":27,"column":20,"nodeType":"92","messageId":"93","endLine":27,"endColumn":31},{"ruleId":"90","severity":1,"message":"111","line":29,"column":19,"nodeType":"92","messageId":"93","endLine":29,"endColumn":27},{"ruleId":"86","severity":1,"message":"112","line":51,"column":8,"nodeType":"88","endLine":51,"endColumn":10,"suggestions":"113"},{"ruleId":"86","severity":1,"message":"114","line":64,"column":8,"nodeType":"88","endLine":64,"endColumn":28,"suggestions":"115"},{"ruleId":"86","severity":1,"message":"116","line":79,"column":8,"nodeType":"88","endLine":79,"endColumn":15,"suggestions":"117"},{"ruleId":"90","severity":1,"message":"118","line":94,"column":11,"nodeType":"92","messageId":"93","endLine":94,"endColumn":17},{"ruleId":"90","severity":1,"message":"119","line":184,"column":9,"nodeType":"92","messageId":"93","endLine":184,"endColumn":13},{"ruleId":"120","severity":1,"message":"121","line":189,"column":35,"nodeType":"122","endLine":189,"endColumn":76},{"ruleId":null,"fatal":true,"severity":2,"message":"123","line":3,"column":2},"no-native-reassign",["124"],"no-negated-in-lhs",["125"],"react-hooks/exhaustive-deps","React Hook useEffect has a missing dependency: 'getReview'. Either include it or remove the dependency array.","ArrayExpression",["126"],"no-unused-vars","'Alert' is defined but never used.","Identifier","unusedVar","'Form' is defined but never used.","'Place' is defined but never used.","'page' is assigned a value but never used.","'setPage' is assigned a value but never used.","'index' is assigned a value but never used.","'setIndex' is assigned a value but never used.","'error' is assigned a value but never used.","'state' is assigned a value but never used.","'setState' is assigned a value but never used.","'showSet' is assigned a value but never used.","React Hook useEffect has a missing dependency: 'getBookmark'. Either include it or remove the dependency array.",["127"],"'Redirect' is defined but never used.","'Nav' is defined but never used.","'mobile' is assigned a value but never used.","'setMobile' is assigned a value but never used.","'getBookmark' is defined but never used.","'response' is assigned a value but never used.","React Hook useEffect has a missing dependency: 'getAssociation'. Either include it or remove the dependency array.",["128"],"React Hook useEffect has missing dependencies: 'endPage' and 'pagePlace'. Either include them or remove the dependency array.",["129"],"React Hook useEffect has missing dependencies: 'getAssociation', 'props.history', and 'search'. Either include them or remove the dependency array.",["130"],"'places' is assigned a value but never used.","'time' is assigned a value but never used.","react/jsx-no-duplicate-props","No duplicate props allowed","JSXAttribute","Parsing error: Unexpected token\n\n\u001b[0m \u001b[90m 1 | \u001b[39m\u001b[36mimport\u001b[39m \u001b[33mReact\u001b[39m\u001b[33m,\u001b[39m { useState\u001b[33m,\u001b[39m useEffect } from \u001b[32m'react'\u001b[39m\u001b[33m;\u001b[39m\u001b[0m\n\u001b[0m \u001b[90m 2 | \u001b[39m\u001b[36mimport\u001b[39m { \u001b[33mRedirect\u001b[39m } from \u001b[32m'react-router-dom'\u001b[39m\u001b[33m;\u001b[39m\u001b[0m\n\u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 3 | \u001b[39m\u001b[33m<<\u001b[39m\u001b[33m<<\u001b[39m\u001b[33m<<\u001b[39m\u001b[33m<\u001b[39m \u001b[33mHEAD\u001b[39m\u001b[0m\n\u001b[0m \u001b[90m | \u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\u001b[0m\n\u001b[0m \u001b[90m 4 | \u001b[39m\u001b[36mimport\u001b[39m ohuh from \u001b[32m'../ohuh.PNG'\u001b[39m\u001b[0m\n\u001b[0m \u001b[90m 5 | \u001b[39m\u001b[36mimport\u001b[39m { \u001b[33mContainer\u001b[39m\u001b[33m,\u001b[39m \u001b[33mRow\u001b[39m\u001b[33m,\u001b[39m \u001b[33mForm\u001b[39m\u001b[33m,\u001b[39m \u001b[33mImage\u001b[39m\u001b[33m,\u001b[39m \u001b[33mInputGroup\u001b[39m\u001b[33m,\u001b[39m \u001b[33mButton\u001b[39m\u001b[33m,\u001b[39m \u001b[33mCol\u001b[39m\u001b[33m,\u001b[39m \u001b[33mNav\u001b[39m } from \u001b[32m'react-bootstrap'\u001b[39m\u001b[33m;\u001b[39m\u001b[0m\n\u001b[0m \u001b[90m 6 | \u001b[39m\u001b[36mimport\u001b[39m { handleLogout\u001b[33m,\u001b[39m isAuthenticated } from \u001b[32m'../utils/auth.js'\u001b[39m\u001b[0m","no-global-assign","no-unsafe-negation",{"desc":"131","fix":"132"},{"desc":"133","fix":"134"},{"desc":"135","fix":"136"},{"desc":"137","fix":"138"},{"desc":"139","fix":"140"},"Update the dependencies array to be: [getReview]",{"range":"141","text":"142"},"Update the dependencies array to be: [getBookmark]",{"range":"143","text":"144"},"Update the dependencies array to be: [getAssociation]",{"range":"145","text":"146"},"Update the dependencies array to be: [association, endPage, index, pagePlace]",{"range":"147","text":"148"},"Update the dependencies array to be: [getAssociation, props.history, search, state]",{"range":"149","text":"150"},[665,667],"[getReview]",[2225,2227],"[getBookmark]",[2018,2020],"[getAssociation]",[2418,2438],"[association, endPage, index, pagePlace]",[3017,3024],"[getAssociation, props.history, search, state]"]
\ No newline at end of file
......@@ -30,12 +30,12 @@ function Place(props) {
aria-labelledby="example-modal-sizes-title-lg">
<Modal.Header closeButton>
<Modal.Title id="contained-modal-title-vcenter" style={{ fontSize: '40px' }}>
{props.index + 1}. {props.place.name}
{props.place.name}
</Modal.Title>
</Modal.Header>
<Modal.Body className="show-grid">
<Container style={{ fontSize: '40px' }}>
{Array.isArray(reviews) ? reviews.map((review, index) => {
{Array.isArray(reviews) ? reviews.map((review) => {
return (
<Row className="mt-4">
<a href={review.link}>{review.title}</a>
......
import React, { useState } from 'react';
import React, { useState, useEffect } from 'react';
import { Redirect } from 'react-router-dom';
import ohuh from '../ohuh.PNG'
import { Container, Row, Form, Image, InputGroup, Button, Col, Nav } from 'react-bootstrap';
import { handleLogout, isAuthenticated } from '../utils/auth.js'
import ohuh from '../ohuh.PNG';
import { Container, Row, Form, Image, InputGroup, Button, Col, Card } from 'react-bootstrap';
import axios from 'axios';
import Place from '../Components/Place';
function App() {
const [state, setState] = useState(false);
const [search, setSearch] = useState("");
const user = isAuthenticated()
const [show, setShow] = useState(false);
const [recommend, setRecommend] = useState([{ name: " ", address: " ", img: " " }]);
const [latest, setLatest] = useState([{ name: " ", address: " ", img: " " }]);
useEffect(() => {
getRecommend()
getLatest()
}, []);
if (state !== false) {
return <Redirect to={`/search?keyword=${search}`} />;
......@@ -21,23 +30,36 @@ function App() {
setState(true);
} //submit 버튼을 누르면 state 값을 true로 바뀐다
const getRecommend = () => {
axios.get(`/api/app/recommend`)
.then(res => {
setRecommend(res.data)
})
.catch(err => {
console.log("APP RECOMMEND ERROR", err)
})
}
const getLatest = () => {
axios.get(`/api/app/lastest`)
.then(res => {
setLatest(res.data)
})
.catch(err => {
console.log("APP LATEST ERROR", err)
})
}
return (
<Container className="vh-100 d-flex justify-content-md-center align-items-center">
<Col md={6} style={{ marginTop: 140 }}>
<Nav className="justify-content-end" bg="#fff" variant="light" >
{user ? <Nav.Link onClick={() => handleLogout()}>로그아웃</Nav.Link>
: (
<>
<Nav.Link href="/signup">회원가입</Nav.Link>
<Nav.Link href="/login">로그인</Nav.Link>
</>
)}
<Nav.Link href='/bookmark'>북마크</Nav.Link>
</Nav>
<Row style={{ marginBottom: 20 }}>
<Image src={ohuh} />
<Container className="vh-100 ">
<Col md={12} >
<Row className="justify-content-center" >
<Image src={ohuh} style={{ margin: "5%", marginTop : "3%" }} />
</Row>
<Row style={{ marginBottom: 500 }}>
<Row style={{ marginBottom: "5%" }}>
<Form className="vw-100" onSubmit={handleSubmit}>
<InputGroup style={{ width: 560 }}>
<Form.Control
......@@ -53,8 +75,43 @@ function App() {
</InputGroup>
</Form>
</Row>
<Row >
<Col md={6} >
<h1 className=" d-flex justify-content-center" style={{marginBottom:"7%"}}>인기관광지</h1>
<Card align="center" border="info" style={{ margin: "3%" }}>
<Card.Title style={{ margin: "3%", fontSize: '200%', fontWeight: 'bold' }} >{recommend.name}</Card.Title>
<Card.Img variant="top" style={{ padding: "5%", width: "100%", height: "340px" }} src={recommend.img} />
<Card.Body >
<Card.Text style={{ overflow: 'auto', fontSize: '25px', width: '100%', height: "80px" }} >
{recommend.address} </Card.Text>
<Button variant="primary" onClick={() => {
setShow(true)
}}>{recommend.name} 자세히 살펴보기</Button>
<Place place={recommend} show={show} onHide={() => setShow(false)} />
</Card.Body>
</Card>
</Col>
<Col md={6} >
<h1 className=" d-flex justify-content-center" style={{marginBottom:"7%"}}>최근 검색관광지</h1>
<Card align="center" border="info" style={{ margin: "3%" }}>
<Card.Title style={{ margin: "3%", fontSize: '200%', fontWeight: 'bold' }} >{latest.name}</Card.Title>
<Card.Img variant="top" style={{ padding: "5%", width: "100%", height: "340px" }} src={latest.img} />
<Card.Body >
<Card.Text style={{ overflow: 'auto', fontSize: '25px', width: '100%', height: "80px" }} >
{latest.address} </Card.Text>
<Button variant="primary" onClick={() => {
setShow(true)
}}>{latest.name} 자세히 살펴보기</Button>
<Place place={latest} show={show} onHide={() => setShow(false)} />
</Card.Body>
</Card>
</Col>
</Row>
</Col>
</Container>
);
}
......
import React, { useState, useEffect } from 'react';
import { Link, Redirect } from 'react-router-dom';
import { Link } 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, Nav } from 'react-bootstrap';
......@@ -57,9 +57,7 @@ function Search(props) {
else {
setPagePlace(paginate(association, index, 4))
}
console.log("뿌릴 data1", pagePlace)
setEndPage(Math.floor((association.length / 4)))
console.log("7489309484839",endPage)
}, [association, index])
......
import Places from '../models/Place.js'
const searchRecommend = async (req, res, next,) => {
let responseRecommend = await Places.aggregate([
{
$project: {
name:1,
address:1,
img:1,
timeslength: { $cond: { if: { $isArray: "$times" }, then: { $size: "$times" }, else: 'NA' } }
}
}
])
let result = responseRecommend.sort((a, b) => {
return b.timeslength-a.timeslength
});
res.send(result[0])
}
const searchLatest = async (req, res, next) => {
let responseLatest = await Places.find({}).sort({ updatedAt: -1 })
res.send(responseLatest[0])
}
export default { searchRecommend, searchLatest }
import Places from '../models/Place.js'
import cheerio from 'cheerio'
// import fs from 'fs'
import axios from 'axios';
import { nextTick } from 'process';
const searchPlace = async (req, res, next,) => {
let DuplicateCheckPlace = await Places.findOne({ name: req.query.keyword })
req.places = DuplicateCheckPlace
if (DuplicateCheckPlace) {
console.log("11111111111111111111111Place################ 기존플레이스줄력중")
}
else {
console.log("2222222222222222222222222222222222222222222222222222222")
const url = "https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=" + encodeURI(req.query.keyword)
const editUrl = /(http(s)?:\/\/)([a-z0-9\w]+\.*)+[a-z0-9]{2,4}/gi
const { data: html } = await axios.get(url)
......@@ -34,7 +30,6 @@ const searchImg = async (req, res, next) => {
if (req.places.img !== "https://t1.daumcdn.net/thumb/R600x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fqna%2Fimage%2F4b035cdf8372d67108f7e8d339660479dfb41bbd") {
console.log("333333333333333333333333333IMG@@@@@@@@@@@@@@@@@@@ 기존이미지줄력중")
req.places.times.push(new Date().toLocaleString())
const newPlaces = await new Places(req.places).save()
next()
......@@ -43,18 +38,12 @@ const searchImg = async (req, res, next) => {
axios.get(imgUrl)
.then(async (response) => {
console.log("4444444444444444444444444444444444444444444444444새로운 이미지 출력중")
const html = response.data
let name = req.query.keyword
let $1 = cheerio.load(html);
let images = $1('.RAyV4b').find('img').attr('src')
req.places.img = images
console.log("4141414141414141", req.places)
//사진만 업데이트
// let Place2 = await Places.findOne({ name: req.query.keyword })
req.places.times.push(new Date().toLocaleString())
// await Places.updateOne({ name: req.query.keyword }, { img: images, times: Place2.times })
// res.send(images)
const newPlaces = await new Places(req.places).save()
next()
})
......@@ -65,7 +54,6 @@ const searchImg = async (req, res, next) => {
const searchAssociation = async (req, res) => {
let Place3 = req.places.address
if (!Place3) {
console.log("asdfasdfasdf222222222222222222dsaf2222222222214123q5", Place3)
res.send({ error: "Place.address is null" })
}
else {
......@@ -73,8 +61,6 @@ const searchAssociation = async (req, res) => {
let AssociationsId = []
let addressPlaces = new RegExp(`${addresse}`)
let responsePlaces = await Places.find({ address: addressPlaces }).sort({ updatedAt: -1 })
//몽구스나 몽고디비에 있는 sort 확인해보고 나열하기.
// console.log("$$$$$$$$$$$4", responsePlaces)
res.send(responsePlaces)
}
}
......
import express from 'express'
import app from '../controllers/app.controller.js'
const router = express.Router()
router.route('/api/app/recommend')
.get(app.searchRecommend)
router.route('/api/app/lastest')
.get(app.searchLatest)
export default router
\ No newline at end of file
......@@ -4,6 +4,7 @@ import placeRouter from './routes/place.routes.js'
import reviewRouter from './routes/review.routes.js'
import userRouter from "./routes/user.routes.js"
import authRouter from "./routes/auth.routes.js"
import appRouter from './routes/app.router.js'
connectDb()
......@@ -15,6 +16,12 @@ app.use(placeRouter)
app.use(reviewRouter)
app.use(userRouter)
app.use(authRouter)
app.use(appRouter)
app.get('/', (req, res) => {
console.log("/ req.body", req.body)
res.json({ message: "http://localhost3001/ 에 연결됨" })
})
app.listen(3001, () => {
console.log('Listening on port 3001')
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment