Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
students
search-page
Commits
c4a0efaf
Commit
c4a0efaf
authored
Jan 27, 2021
by
Lee SeoYeon
Browse files
Merge remote-tracking branch 'origin/BAE' into lsy
parents
1d23009d
f039e74c
Changes
3
Show whitespace changes
Inline
Side-by-side
client/src/Components/Paginations.js
View file @
c4a0efaf
...
...
@@ -6,27 +6,47 @@ import React from 'react';
function
Paginations
(
props
)
{
return
(
<>
{(
props
.
endPage
>
5
)
?
<
Pagination
>
<
Pagination
.
First
onClick
=
{()
=>
props
.
handlePage
(
1
)}
/
>
{
props
.
index
===
1
?
<
Pagination
.
Prev
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
)}
/> : <Pagination.Prev onClick={
()
=>props.handlePage
(
props.index - 1
)
} /
>
}
{
props
.
index
===
props
.
endPage
-
1
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
-
3
)}
>
{
props
.
index
-
3
}
<
/Pagination.Item> : ""
}
{
props
.
index
===
props
.
endPage
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
-
4
)}
>
{
props
.
index
-
4
}
<
/Pagination.Item> : ""
}
{
props
.
index
===
props
.
endPage
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
-
3
)}
>
{
props
.
index
-
3
}
<
/Pagination.Item> : ""
}
{
props
.
index
<
3
?
""
:
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
-
2
)}
>
{
props
.
index
-
2
}
<
/Pagination.Item>
}
{
props
.
index
===
1
?
""
:
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
-
1
)}
>
{
props
.
index
-
1
}
<
/Pagination.Item>
}
{
props
.
index
===
1
?
<
Pagination
.
Prev
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
)}
/> : <Pagination.Prev onClick={
()
=>
props.handlePage
(
props.index - 1
)
} /
>
}
{
props
.
index
===
props
.
endPage
-
1
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
-
3
)}
>
{
props
.
index
-
3
}
<
/Pagination.Item> : ""
}
{
props
.
index
===
props
.
endPage
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
-
4
)}
>
{
props
.
index
-
4
}
<
/Pagination.Item> : ""
}
{
props
.
index
===
props
.
endPage
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
-
3
)}
>
{
props
.
index
-
3
}
<
/Pagination.Item> : ""
}
{
props
.
index
<
3
?
""
:
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
-
2
)}
>
{
props
.
index
-
2
}
<
/Pagination.Item>
}
{
props
.
index
===
1
?
""
:
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
-
1
)}
>
{
props
.
index
-
1
}
<
/Pagination.Item>
}
<
Pagination
.
Item
active
>
{
props
.
index
}
<
/Pagination.Item
>
{
props
.
index
===
props
.
endPage
?
""
:
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
+
1
)}
>
{
props
.
index
+
1
}
<
/Pagination.Item>
}
{
props
.
index
>
props
.
endPage
-
2
?
""
:
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
+
2
)}
>
{
props
.
index
+
2
}
<
/Pagination.Item>
}
{
props
.
index
===
1
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
+
3
)}
>
{
props
.
index
+
3
}
<
/Pagination.Item> : ""
}
{
props
.
index
===
1
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
+
4
)}
>
{
props
.
index
+
4
}
<
/Pagination.Item> : ""
}
{
props
.
index
===
2
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
+
3
)}
>
{
props
.
index
+
3
}
<
/Pagination.Item> : ""
}
{
props
.
index
===
props
.
endPage
?
""
:
<
Pagination
.
Next
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
+
1
)}
/>
}
{
props
.
index
===
props
.
endPage
?
""
:
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
+
1
)}
>
{
props
.
index
+
1
}
<
/Pagination.Item>
}
{
props
.
index
>
props
.
endPage
-
2
?
""
:
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
+
2
)}
>
{
props
.
index
+
2
}
<
/Pagination.Item>
}
{
props
.
index
===
1
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
+
3
)}
>
{
props
.
index
+
3
}
<
/Pagination.Item> : ""
}
{
props
.
index
===
1
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
+
4
)}
>
{
props
.
index
+
4
}
<
/Pagination.Item> : ""
}
{
props
.
index
===
2
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
+
3
)}
>
{
props
.
index
+
3
}
<
/Pagination.Item> : ""
}
{
props
.
index
===
props
.
endPage
?
""
:
<
Pagination
.
Next
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
+
1
)}
/>
}
<
Pagination
.
Last
onClick
=
{()
=>
props
.
handlePage
(
props
.
endPage
)}
/
>
<
Pagination
.
Last
onClick
=
{()
=>
props
.
handlePage
(
props
.
endPage
)}
/
>
<
/Pagination
>
:
<
Pagination
>
{
props
.
index
===
1
?
""
:
<
Pagination
.
First
onClick
=
{()
=>
props
.
handlePage
(
1
)}
/>
}
{
props
.
index
===
1
?
""
:
<
Pagination
.
Prev
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
-
1
)}
/>
}
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
1
)}
active
=
{
props
.
index
===
1
}
>
1
<
/Pagination.Item
>
{
props
.
endPage
>
1
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
2
)}
active
=
{
props
.
index
===
2
}
>
2
<
/Pagination.Item> : ""
}
{
props
.
endPage
>
2
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
3
)}
active
=
{
props
.
index
===
3
}
>
3
<
/Pagination.Item> : ""
}
{
props
.
endPage
>
3
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
4
)}
active
=
{
props
.
index
===
4
}
>
4
<
/Pagination.Item> : ""
}
{
props
.
endPage
>
4
?
<
Pagination
.
Item
onClick
=
{()
=>
props
.
handlePage
(
5
)}
active
=
{
props
.
index
===
5
}
>
5
<
/Pagination.Item> : ""
}
{
props
.
index
===
props
.
endPage
?
""
:
<
Pagination
.
Next
onClick
=
{()
=>
props
.
handlePage
(
props
.
index
+
1
)}
/>
}
{
props
.
index
===
props
.
endPage
?
""
:
<
Pagination
.
Last
onClick
=
{()
=>
props
.
handlePage
(
props
.
endPage
)}
/>
}
<
/Pagination
>
}
<
/
>
)
}
...
...
client/src/Pages/Search.js
View file @
c4a0efaf
...
...
@@ -10,39 +10,19 @@ import * as Icon from 'react-bootstrap-icons';
import
{
isAuthenticated
}
from
'
../utils/auth
'
;
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 [pagePlace, setPagePlace] = useState();
const
[
association
,
setAssociation
]
=
useState
([])
const
[
pagePlace
,
setPagePlace
]
=
useState
([])
const
[
bookmark
,
setBookmark
]
=
useState
([
false
,
false
,
false
,
false
])
const
user
=
isAuthenticated
()
const
[
mobile
,
setMobile
]
=
useState
();
const
[
association
,
setAssociation
]
=
useState
([{
name
:
"
"
,
address
:
"
"
,
img
:
"
"
}])
const
[
pagePlace
,
setPagePlace
]
=
useState
([{
name
:
"
"
,
address
:
"
"
,
img
:
"
"
},
{
name
:
"
"
,
address
:
"
"
,
img
:
"
"
}])
const
[
endPage
,
setEndPage
]
=
useState
(
1
)
// 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
}
`
)
...
...
@@ -62,12 +42,17 @@ function Search(props) {
},
[]);
useEffect
(()
=>
{
console
.
log
(
"
222222222222222222
"
,
bookmark
)
},
[
bookmark
])
useEffect
(()
=>
{
if
(
association
.
length
<
3
)
{
setPagePlace
(
paginate
(
association
,
index
,
association
.
length
))
},
[
association
]);
}
else
{
setPagePlace
(
paginate
(
association
,
index
,
4
))
}
console
.
log
(
"
뿌릴 data1
"
,
pagePlace
)
setEndPage
(
Math
.
floor
((
association
.
length
/
4
)))
console
.
log
(
"
7489309484839
"
,
endPage
)
},
[
association
,
index
])
useEffect
(()
=>
{
getAssociation
()
...
...
@@ -132,6 +117,8 @@ function Search(props) {
const
handlePage
=
(
num
)
=>
{
setIndex
(
num
);
console
.
log
(
"
pagenation num
"
,
num
)
console
.
log
(
index
)
}
...
...
@@ -141,17 +128,21 @@ function Search(props) {
const
handleSubmit
=
(
e
)
=>
{
e
.
preventDefault
()
setState
(
true
);
setState
(
true
)
setIndex
(
1
)
}
function
paginate
(
items
,
pageNumber
,
itemNumber
)
{
const
page
=
[];
const
startIndex
=
(
pageNumber
-
1
)
*
itemNumber
for
(
var
i
=
0
;
i
<
itemNumber
;
i
++
)
{
page
.
push
(
items
[(
startIndex
+
i
)])
}
console
.
log
(
"
뿌릴 data22222222222222222
"
,
page
)
return
page
}
//usestate 쓰거나 한번에 useeffect에 넣기
async
function
handlebookmark
(
index
)
{
if
(
!
bookmark
[
index
])
{
...
...
@@ -194,8 +185,10 @@ function Search(props) {
<
/InputGroup
>
<
/Form
>
<
/Row
>
{
time
.
toLocaleString
()}
{
/*
{time.toLocaleString()}
*/
}
<
Row
className
=
"
d-flex flex-wrap
"
>
{
console
.
log
(
"
#####################33
"
,
pagePlace
)}
{
pagePlace
.
map
((
place
,
index
)
=>
{
return
(
<
Col
key
=
{
index
}
md
=
{
6
}
>
...
...
@@ -227,6 +220,8 @@ function Search(props) {
<
/Col
>
)
})}
<
/Row
>
<
Row
className
=
"
mt-2 d-flex justify-content-center
"
>
<
Paginations
index
=
{
index
}
endPage
=
{
endPage
}
handlePage
=
{
handlePage
}
><
/Paginations
>
...
...
server/controllers/place.controller.js
View file @
c4a0efaf
...
...
@@ -32,12 +32,10 @@ const searchPlace = async (req, res, next,) => {
const
searchImg
=
async
(
req
,
res
,
next
)
=>
{
console
.
log
(
"
d213532513212osfnlagm2214124
"
,
req
.
places
)
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
())
console
.
log
(
"
세이브 전 111111111111111111
"
,
req
.
places
)
const
newPlaces
=
await
new
Places
(
req
.
places
).
save
()
next
()
}
else
if
(
req
.
places
.
img
===
"
https://t1.daumcdn.net/thumb/R600x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fqna%2Fimage%2F4b035cdf8372d67108f7e8d339660479dfb41bbd
"
)
{
...
...
@@ -57,7 +55,6 @@ const searchImg = async (req, res, next) => {
req
.
places
.
times
.
push
(
new
Date
().
toLocaleString
())
// await Places.updateOne({ name: req.query.keyword }, { img: images, times: Place2.times })
// res.send(images)
console
.
log
(
"
세이브 전 222222222222222
"
,
req
.
places
)
const
newPlaces
=
await
new
Places
(
req
.
places
).
save
()
next
()
})
...
...
@@ -65,48 +62,8 @@ const searchImg = async (req, res, next) => {
console
.
log
(
"
이미지 생성 오류발생!!
"
)
}
}
// if (DuplicateCheckImg !== "https://t1.daumcdn.net/thumb/R600x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fqna%2Fimage%2F4b035cdf8372d67108f7e8d339660479dfb41bbd") {
// console.log("333333333333333333333333333IMG@@@@@@@@@@@@@@@@@@@ 기존이미지줄력중")
// }
// else if (DuplicateCheckImg === "https://t1.daumcdn.net/thumb/R600x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fqna%2Fimage%2F4b035cdf8372d67108f7e8d339660479dfb41bbd") {
// console.log("4444444444444444444444444444444444444444444444444")
// const imgUrl = "https://www.google.com/search?q=" + encodeURI(req.query.keyword) + "+site:tistory.com/&sxsrf=ALeKk023Dv08KQDodRmpB5222lQuzw2Vaw:1610612821100&source=lnms&tbm=isch"
// axios.get(imgUrl)
// .then(async (response) => {
// 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
// //사진만 업데이트
// // 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)
// console.log("세이브 전 111111111111111111", req.places)
// const newPlaces = await new Places(req.places).save()
// next()
// })
// } else {
// console.log("IMG에러")
// }
// req.places.times.push(new Date().toLocaleString())
// console.log("세이브 전222222222222222222222")
// next()
// }
//맨 처음 검색하는 지역의 관광지의 경우 association을 받아올 수 없다.
const
searchAssociation
=
async
(
req
,
res
)
=>
{
// let Place3 = await Places.findOne({ name: req.query.keyword })
let
Place3
=
req
.
places
.
address
// if (!Place) {
// res.send([])
// }
if
(
!
Place3
)
{
console
.
log
(
"
asdfasdfasdf222222222222222222dsaf2222222222214123q5
"
,
Place3
)
res
.
send
({
error
:
"
Place.address is null
"
})
...
...
@@ -117,14 +74,9 @@ const searchAssociation = async (req, res) => {
let
addressPlaces
=
new
RegExp
(
`
${
addresse
}
`
)
let
responsePlaces
=
await
Places
.
find
({
address
:
addressPlaces
}).
sort
({
updatedAt
:
-
1
})
//몽구스나 몽고디비에 있는 sort 확인해보고 나열하기.
console
.
log
(
"
$$$$$$$$$$$4
"
,
responsePlaces
)
//
console.log("$$$$$$$$$$$4", responsePlaces)
res
.
send
(
responsePlaces
)
}
// responsePlaces.map(Association => {
// AssociationsId.push(Association._id)
// })
// console.log("Associations = ", Associations)
// res.send(AssociationsId)
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment