Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
students
travel
Commits
33e86a75
Commit
33e86a75
authored
Jul 21, 2022
by
Lee Soobeom
Browse files
update button
parent
deade4a1
Changes
6
Hide whitespace changes
Inline
Side-by-side
frontend/src/App.tsx
View file @
33e86a75
...
@@ -27,9 +27,9 @@ export const App = () => {
...
@@ -27,9 +27,9 @@ export const App = () => {
}
}
/>
/>
<
Route
path
=
"board"
element
=
{
<
Board
/>
}
/>
<
Route
path
=
"board"
element
=
{
<
Board
/>
}
/>
<
Route
path
=
"post/:postId
/
"
element
=
{
<
IntoPost
/>
}
>
<
Route
path
=
"post/:postId"
element
=
{
<
IntoPost
/>
}
/
>
<
Route
path
=
"edit"
element
=
{
<
EditPost
/>
}
/>
<
Route
path
=
"edit"
element
=
{
<
EditPost
/>
}
/>
</
Route
>
{
/*
</Route>
*/
}
<
Route
<
Route
path
=
"profile"
path
=
"profile"
element
=
{
element
=
{
...
...
frontend/src/post/editpost.tsx
View file @
33e86a75
...
@@ -33,17 +33,18 @@ export function EditPost() {
...
@@ -33,17 +33,18 @@ export function EditPost() {
const
[
disabled
,
setDisabled
]
=
useState
(
false
);
const
[
disabled
,
setDisabled
]
=
useState
(
false
);
const
[
success
,
setSuccess
]
=
useState
(
false
);
const
[
success
,
setSuccess
]
=
useState
(
false
);
async
function
handlePost
Submit
(
event
:
FormEvent
)
{
async
function
reWrite
Submit
(
event
:
FormEvent
)
{
event
.
preventDefault
();
event
.
preventDefault
();
try
{
try
{
setError
(
""
);
setError
(
""
);
console
.
log
(
"
user data
"
,
user
);
console
.
log
(
"
user data
"
,
user
);
if
(
postingFormMatch
(
)
)
{
if
(
postingFormMatch
(
user
)
===
true
)
{
setLoading
(
true
);
setLoading
(
true
);
const
res
=
await
postApi
.
updating
(
user
);
const
res
=
await
postApi
.
updating
(
user
);
console
.
log
(
"
clear
"
,
res
);
navigate
(
"
/board
"
,
{
replace
:
true
});
navigate
(
"
/board
"
,
{
replace
:
true
});
setSuccess
(
true
);
setSuccess
(
true
);
setError
(
""
);
setError
(
""
);
...
@@ -56,17 +57,17 @@ export function EditPost() {
...
@@ -56,17 +57,17 @@ export function EditPost() {
}
}
}
}
function
postingFormMatch
()
{
function
postingFormMatch
(
user
:
PostType
)
{
if
(
!
isLength
(
user
.
title
??
""
,
{
min
:
1
}))
{
if
(
!
isLength
(
user
.
title
??
""
,
{
min
:
1
}))
{
setError
(
"
제목을 입력해 주세요.
"
);
setError
(
"
제목을 입력해 주세요.
"
);
return
false
;
return
false
;
}
else
if
(
!
isLength
(
user
.
text
??
""
,
{
min
:
1
}))
{
}
else
if
(
!
isLength
(
user
.
text
??
""
,
{
min
:
1
}))
{
setError
(
"
내용을 입력해 주세요.
"
);
setError
(
"
내용을 입력해 주세요.
"
);
return
false
;
return
false
;
}
else
if
(
equals
(
city
,
"
질문종류
"
))
{
}
else
if
(
equals
(
city
,
"
city
"
))
{
setError
(
"
테마를 선택해 주세요.
"
);
setError
(
"
테마를 선택해 주세요.
"
);
return
false
;
return
false
;
}
else
if
(
equals
(
theme
,
"
질문종류
"
))
{
}
else
if
(
equals
(
theme
,
"
theme
"
))
{
setError
(
"
도시를 선택해 주세요.
"
);
setError
(
"
도시를 선택해 주세요.
"
);
return
false
;
return
false
;
}
else
{
}
else
{
...
@@ -108,18 +109,17 @@ export function EditPost() {
...
@@ -108,18 +109,17 @@ export function EditPost() {
return
(
return
(
<
div
className
=
"flex flex-col border-3"
>
<
div
className
=
"flex flex-col border-3"
>
<
form
onSubmit
=
{
handlePost
Submit
}
className
=
"w-full items-center"
>
<
form
onSubmit
=
{
reWrite
Submit
}
className
=
"w-full items-center"
>
<
div
className
=
"flex flex-row relative"
>
<
div
className
=
"flex flex-row relative"
>
<
p
className
=
"basis-1/12 gap-x-8"
>
Id
</
p
>
<
p
className
=
"basis-1/12 gap-x-8"
>
Id
</
p
>
<
p
className
=
"basis-8/12 invisible"
>
empty
</
p
>
<
p
className
=
"basis-8/12 invisible"
>
empty
</
p
>
<
select
<
select
name
=
"city"
name
=
"city"
id
=
"Questions"
className
=
"border border-3 border-black w-1/12"
className
=
"border border-3 border-black w-1/12"
onChange
=
{
cityChange
}
onChange
=
{
cityChange
}
defaultValue
=
"질문종류"
defaultValue
=
{
post
.
city
}
>
>
<
option
value
=
"
질문종류
"
>
도시
</
option
>
<
option
value
=
"
city
"
>
도시
</
option
>
<
option
value
=
"Seoul"
>
서울
</
option
>
<
option
value
=
"Seoul"
>
서울
</
option
>
<
option
value
=
"Busan"
>
부산
</
option
>
<
option
value
=
"Busan"
>
부산
</
option
>
<
option
value
=
"Incheon"
>
인천
</
option
>
<
option
value
=
"Incheon"
>
인천
</
option
>
...
@@ -133,12 +133,11 @@ export function EditPost() {
...
@@ -133,12 +133,11 @@ export function EditPost() {
</
select
>
</
select
>
<
select
<
select
name
=
"theme"
name
=
"theme"
id
=
"Questions"
className
=
"border border-3 border-black w-1/12"
className
=
"border border-3 border-black w-1/12"
onChange
=
{
themeChange
}
onChange
=
{
themeChange
}
defaultValue
=
"질문종류"
defaultValue
=
{
post
.
theme
}
>
>
<
option
value
=
"
질문종류
"
>
테마
</
option
>
<
option
value
=
"
theme
"
>
테마
</
option
>
<
option
value
=
"cycling"
>
사이클링
</
option
>
<
option
value
=
"cycling"
>
사이클링
</
option
>
<
option
value
=
"surfing"
>
서핑
</
option
>
<
option
value
=
"surfing"
>
서핑
</
option
>
<
option
value
=
"activity"
>
액티비티
</
option
>
<
option
value
=
"activity"
>
액티비티
</
option
>
...
@@ -157,7 +156,7 @@ export function EditPost() {
...
@@ -157,7 +156,7 @@ export function EditPost() {
type
=
"submit"
type
=
"submit"
className
=
"border border-black basis-1/12 gap-x-8"
className
=
"border border-black basis-1/12 gap-x-8"
>
>
글쓰기
Rewrite
</
button
>
</
button
>
</
div
>
</
div
>
...
@@ -167,7 +166,9 @@ export function EditPost() {
...
@@ -167,7 +166,9 @@ export function EditPost() {
onChange
=
{
titleChange
}
onChange
=
{
titleChange
}
placeholder
=
"title"
placeholder
=
"title"
className
=
"w-full h-8"
className
=
"w-full h-8"
></
textarea
>
>
{
post
.
title
}
</
textarea
>
</
div
>
</
div
>
<
div
className
=
"flex border-2"
>
<
div
className
=
"flex border-2"
>
<
textarea
<
textarea
...
@@ -175,7 +176,9 @@ export function EditPost() {
...
@@ -175,7 +176,9 @@ export function EditPost() {
name
=
"text"
name
=
"text"
placeholder
=
"text"
placeholder
=
"text"
className
=
"w-full h-96"
className
=
"w-full h-96"
></
textarea
>
>
{
post
.
text
}
</
textarea
>
</
div
>
</
div
>
</
form
>
</
form
>
</
div
>
</
div
>
...
...
frontend/src/post/intopost.tsx
View file @
33e86a75
import
React
,
{
MouseEvent
}
from
"
react
"
;
import
React
,
{
MouseEvent
}
from
"
react
"
;
import
{
useLocation
,
useNavigate
,
Link
}
from
"
react-router-dom
"
;
import
{
useLocation
,
useNavigate
,
Link
,
Outlet
}
from
"
react-router-dom
"
;
import
{
postApi
}
from
"
../apis
"
;
import
{
postApi
}
from
"
../apis
"
;
import
{
PostType
}
from
"
../types
"
;
import
{
PostType
}
from
"
../types
"
;
...
@@ -23,42 +23,45 @@ export function IntoPost() {
...
@@ -23,42 +23,45 @@ export function IntoPost() {
return
(
return
(
<
div
>
<
div
>
<
div
>
<
div
>
<
div
className
=
"flex flex-row basis-8"
>
<
div
>
<
div
className
=
"border-2 border-current rounded"
>
<
div
className
=
"flex flex-row basis-8"
>
<
button
id
=
{
post
.
_id
}
onClick
=
{
handleDeleteClick
}
>
<
div
className
=
"border-2 border-current rounded"
>
delete
<
button
id
=
{
post
.
_id
}
onClick
=
{
handleDeleteClick
}
>
</
button
>
delete
</
button
>
</
div
>
<
div
className
=
"border-2 border-current rounded"
>
<
Link
to
=
"/edit"
state
=
{
post
}
>
<
button
>
update
</
button
>
</
Link
>
</
div
>
</
div
>
</
div
>
<
div
className
=
"border-2 border-current rounded"
>
<
div
className
=
"flex flex-row"
>
<
Link
to
=
{
`/post/
${
post
.
_id
}
/edit`
}
state
=
{
post
}
>
<
div
className
=
"flex basis-3/4 border-2 border-black rounded"
>
<
button
>
update
</
button
>
제목:
{
post
.
title
}
</
Link
>
</
div
>
<
div
className
=
"flex basis-1/4 border-2 border-black rounded"
>
작성자: nickname
</
div
>
</
div
>
</
div
>
</
div
>
<
div
className
=
"flex flex-row"
>
<
div
className
=
"flex flex-row"
>
<
div
className
=
"flex basis-1/4 border-2 border-black rounded"
>
<
div
className
=
"flex basis-3/4 border-2 border-black rounded"
>
도시:
{
post
.
city
}
제목:
{
post
.
title
}
</
div
>
</
div
>
<
div
className
=
"flex basis-1/4 border-2 border-black rounded"
>
<
div
className
=
"flex basis-1/4 border-2 border-black rounded"
>
테마:
{
post
.
theme
}
작성자: nickname
</
div
>
</
div
>
<
div
className
=
"flex basis-1/4 border-2 border-black rounded"
>
</
div
>
작성일:
{
post
.
date
}
<
div
className
=
"flex flex-row"
>
</
div
>
<
div
className
=
"flex basis-1/4 border-2 border-black rounded"
>
<
div
className
=
"flex basis-1/4 border-2 border-black rounded"
>
도시:
{
post
.
city
}
조회수:
{
post
.
counts
}
</
div
>
</
div
>
<
div
className
=
"flex basis-1/4 border-2 border-black rounded"
>
테마:
{
post
.
theme
}
</
div
>
<
div
className
=
"flex basis-1/4 border-2 border-black rounded"
>
작성일:
{
post
.
date
}
</
div
>
<
div
className
=
"flex basis-1/4 border-2 border-black rounded"
>
조회수:
{
post
.
counts
}
</
div
>
</
div
>
</
div
>
</
div
>
<
div
className
=
"border-2 border-black rounded h-full"
>
{
post
.
text
}
</
div
>
</
div
>
</
div
>
<
div
className
=
"border-2 border-black rounded h-96"
>
{
post
.
text
}
</
div
>
{
/* <Outlet /> */
}
</
div
>
</
div
>
);
);
}
}
src/controllers/post.controller.ts
View file @
33e86a75
...
@@ -94,7 +94,7 @@ export const getOnePost = asyncWrap(async (req, res) => {
...
@@ -94,7 +94,7 @@ export const getOnePost = asyncWrap(async (req, res) => {
export
const
deleteOnePost
=
asyncWrap
(
async
(
req
,
res
)
=>
{
export
const
deleteOnePost
=
asyncWrap
(
async
(
req
,
res
)
=>
{
const
{
postId
}
=
req
.
params
;
const
{
postId
}
=
req
.
params
;
console
.
log
(
postId
);
//
console.log(postId);
const
deleteCount
=
await
postDb
.
deletePost
(
postId
);
const
deleteCount
=
await
postDb
.
deletePost
(
postId
);
return
res
.
json
(
deleteCount
);
return
res
.
json
(
deleteCount
);
...
...
src/db/post.db.ts
View file @
33e86a75
...
@@ -42,7 +42,15 @@ export const deletePost = async (_id: string) => {
...
@@ -42,7 +42,15 @@ export const deletePost = async (_id: string) => {
export
const
updateOnePost
=
async
(
post
:
PostType
,
_id
:
string
)
=>
{
export
const
updateOnePost
=
async
(
post
:
PostType
,
_id
:
string
)
=>
{
const
newPost
=
await
Post
.
findOneAndUpdate
(
const
newPost
=
await
Post
.
findOneAndUpdate
(
{
_id
:
_id
},
{
_id
:
_id
},
{
post
},
{
title
:
post
.
title
,
text
:
post
.
text
,
theme
:
post
.
theme
,
city
:
post
.
city
,
date
:
post
.
date
,
counts
:
post
.
counts
,
user
:
post
.
user
,
},
{
new
:
true
}
{
new
:
true
}
);
);
return
newPost
;
return
newPost
;
...
...
src/routes/post.route.ts
View file @
33e86a75
...
@@ -9,11 +9,9 @@ router.route("/").get(postCtrl.getAllPost);
...
@@ -9,11 +9,9 @@ router.route("/").get(postCtrl.getAllPost);
router
router
.
route
(
"
/:postId
"
)
.
route
(
"
/:postId
"
)
.
post
(
authCtrl
.
requireLogin
,
postCtrl
.
addCounts
)
.
post
(
authCtrl
.
requireLogin
,
postCtrl
.
addCounts
)
.
get
(
authCtrl
.
requireLogin
,
postCtrl
.
getOnePost
);
.
get
(
authCtrl
.
requireLogin
,
postCtrl
.
getOnePost
)
.
delete
(
authCtrl
.
requireLogin
,
postCtrl
.
deleteOnePost
)
// authenticate
router
.
route
(
"
/:postId
"
).
delete
(
authCtrl
.
requireLogin
,
postCtrl
.
deleteOnePost
);
// authenticate
.
put
(
authCtrl
.
requireLogin
,
postCtrl
.
updatePost
);
router
.
route
(
"
/:postId
"
).
put
(
authCtrl
.
requireLogin
,
postCtrl
.
updatePost
);
router
.
param
(
"
postId
"
,
postCtrl
.
userByPostId
);
router
.
param
(
"
postId
"
,
postCtrl
.
userByPostId
);
export
default
router
;
export
default
router
;
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