๐๏ธ ์ํฉ
ํ๋ก์ ํธ๋ฅผ ์งํํจ์ ์์ด์ ์ฌ์ค ๋ณด์ฌ์ง๋ ๋ถ๋ถ์ ๊ฝค๋ ์ค์ํ๋ค.
๋ด์ผ๋ฐฐ์์บ ํ ๊ฐ์ ๊ฒฝ์ฐ, ๋ฐฑ์๋ ๊ณผ์ ์งํ์๋ผ๋ฆฌ ๋ชจ์ฌ์ ํ๋ก์ ํธ๋ฅผ ํ๊ธฐ ๋๋ฌธ์, ํ๋ก ํธ์์ ํ์ ๊ฒฝํ์ด ์์ด ์ข ๊ฑฑ์ ์ด์๋ค.
์ด์ ๊น์ง๋ html, css, js๋ฅผ ์ด์ฉํด ๊ธฐ์ด์ ์ธ ๋ถ๋ถ์ ์งํํ๊ธฐ ๋๋ฌธ์, ํฌ๊ฒ ์ด๋ ค์์ ์์์ง๋ง,
express๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ํฉ์์ ์ด๋ป๊ฒ ๊ฐ์ ์ ๋ฌํด์ผ ํ ์ง ์ ๋ง ๋ง๋งํ๋ค.
์ผ๋จ ๊ณต์๋ฌธ์์ ์ฌ๋ฌ ํ์ฉ ์์๋ค์ ๋ณด์๋ค.
๐ท ejs ์ฌ์ฉํ๊ธฐ
๊ฐ์ฅ ์ค์ํ ์์ ์ค ํ๋๋ ๋ณด์ฌ์ง ํ๋ฉด์์, ๋ฒํผ์ ๋๋ ์ ๊ฒฝ์ฐ์๋ค.
ํ๋์ค ๊ฐ์ผ๋ก ์ ์ id๋, post id๊ฐ ์ ๋ฌ์ด ๋์ด์ผ ํ๋ ์ํฉ์ธ ๊ฒฝ์ฐ
์ด๋ป๊ฒ ๊ฐ์ ๋ฃ์ด์ค์ ์ํ๋ router๋ฅผ ์คํ๋๋๋ก ํ ์ง ๋ง์ด๋ค.
๋จ์ํ ๊ฐ์ ๋ณด์ฌ์ฃผ๋ฉด์ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋๊ฑด ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋๋ฐ,
๋ณด์ฌ์ค ํ๋ฉด์์ ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ ๊ฒฝ์ฐ, ์ํ๋ ๋ผ์ฐํฐ๋ก ์์ ์๋ํด์ผ ํ๋ค.
์ผ๋จ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ค์ ์ดํด๋ณด์.
1. ๋ฝ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ธฐ
๋ผ์ฐํฐ ํจ์ ์์์, res.render() ๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ejs ํ์ผ๋ก ๋๊ฒจ์ค ์ ์๋ค.
res.render('๋๊ฒจ์ค ejsํ์ผ๋ช '. , { ๋ณด๋ผ ๋ฐ์ดํฐ ์ด๋ฆ: ๋ณด๋ผ ๋ฐ์ดํฐ ๊ฐ} )
res.render('modifyUserInfo', {
userId: req.params.userId,
data: userData,
pwd: true,
});
modifyUserInfo.ejs ํ์ผ์์๋ ์๋์ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค.
<input value="<%= data.description %>" />
๋๊ฒจ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ง์ง๋์๋ <%= %>๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ค.
2. ๋ฒํผ์ ๋๋ฅด๋ฉด params ๊ฐ์ ๋ฐ๋ฅธ router๊ฐ ๋์ํ๊ฒ ํ๊ธฐ. GET / POST
์๋ฅผ ๋ค๋ฉด ๋ฒํผ์ ๋๋ฅธ ๊ฒฝ์ฐ
api/user/modify/32 ๋ผ๋ ์ฃผ์๋ก post์์ฒญ์ ๋ณด๋ด์ผ ๋๋ค๊ณ ํด๋ณด์.
๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋ ์ฃผ์๊ฐ์ด ๋๊ฒจ๋ฐ์์ผ ํ ๋ฐ์ดํฐ์๋ค.
์ฒ์์๋ ๋ฒํผ์ onclick ๋ฉ์๋๋ฅผ ์ค์
ejs ํ์ผ์ ํ๋จ์ script ํ๊ทธ๋ฅผ ์ด๊ณ , ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ ๊ฒฝ์ฐ ํจ์๊ฐ ์คํ๋๋๋ก ์ ์ด์ค ํ,
ํด๋น ํจ์ ๋ด๋ถ์ params ๊ฐ์ ๊ฐ์ ธ์ค๋ ค ํ๋ค. ๋น์ฐํ ์ ์๋ํ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ค.
๊ทธ๋ฐ๋ฐ ์๋๋ค. ๋ถ๋ฌ์ ์ง์ง ์์๋ค.
๐ง
์๊ณ ๋ณด๋ ejs์ ํน์ฑ์ด ์์๋ค.
EJS : ์๋ฒ์ธก์์ ๋ฐ์ดํฐ๋ฅผ ํ ํ๋ฆฟ์ ๋ฃ์ด, ๊ทธ๊ฑธ ํ์ฉํด ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค.
์๋ ์์๋ ์ด๋ ๋ค.
๋ณด์ฌ์ง ํ๋ฉด์์ ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ๋๋ฅธ๋ค.
๋ฒํผ์ ๋๋ฅธ ์๊ฐ onclick์ ๊ฑธ๋ ค์๋ ํจ์ saveUserInfo() ๋ฅผ ์ฐพ๋๋ค.
<script> ํ๊ทธ ๋ด๋ถ์ ์๋ saveUserInfo() ํจ์๋ ํด๋ผ์ด์ธํธ ์ธก์์ ์คํ๋๋ค.
ํด๋ผ์ด์ธํธ ์ธก์์ ์คํ์ด ๋๊ธฐ ๋๋ฌธ์, ํ ํ๋ฆฟ์ ๋ฃ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ฌ ์ ์๋ค.
๊ทธ๋ ์ง๋ง ๋ฐฉ๋ฒ์ ์๋ค.
๋ฐฉ๋ฒ 1. ์คํฌ๋ฆฝํธ ํ๊ทธ์์ ๋ณ์์ ๋ฃ์ด๋ ํ์ ์คํํ๊ธฐ.
<script>
const userId = '<%= user.id %>'; // ํด๋ผ์ด์ธํธ ์ธก JavaScript ๋ณ์์ ํ ๋น
function onclickFun(e) {
e.preventDefault();
location.href = '/api/user/modify/' + userId; // ํ ๋น๋ ๋ณ์ ์ฌ์ฉ
}
</script>
ejs์์ ํ ํ๋ฆฟ์ ๋ด์ ๋ฐ์ดํฐ๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์์์ ์๋ํ์ง ์๋๋ค.
์๋ฒ์ธก์์ ์คํ๋๋๊ฒ ์๋๋ผ ํด๋ผ์ด์ธํธ ์ธก์์ ๋ฆฌ์ค๋๊ฐ ์๋ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ํ๊ฒ ํ๋ ค๋ฉด ์์ ์์์ฒ๋ผ ๋ณ์์ ๋ด์ ์จ์ผํ๋ค.
๋ฐฉ๋ฒ 2. ์คํฌ๋ฆฝํธ ํ๊ทธ ๋ด๋ถ๊ฐ ์๋, ๋ฒํผ์ด๋ form ํ๊ทธ ๋ด๋ถ์ ์์ฑ์ผ๋ก ์ ์ด์ฃผ๊ธฐ.
<form action="/api/user/modify/<%= userId %>" method="POST">
<button id="Sign_up_save" type="submit" class="btn btn-secondary Sign_up_btn">
์ ์ฅํ๊ธฐ
</button>
</form>
์ด๋ ๊ฒ ํ๋ฉด ํ ํ๋ฆฟ์ ๋ด์ ๋ฐ์ดํฐ ๊ฐ์ ํ์ฉํ ์ ์๋ค.
๋ํ form ํ๊ทธ๋ฅผ ์ด์ฉํ๋ฉด, action์๋ ์ฃผ์๋ฅผ, method์๋ ์์ฒญ์ ์ข ๋ฅ๋ฅผ ์ ์ด์ค ์ ์์ด์, post ์์ฒญ์ด ๊ฐ๋ฅํ๋ค.
๐ซ ๋๋์
ejs๋ ์ผ๋ฐ html๊ณผ ๋ง์ด ๋น์ทํ๊ฒ ์๊ฒผ๊ณ , ์งง์ ํํ๋ก์ ํธ ๊ธฐ๊ฐ์ด๊ธฐ์
ํด๋น ํ ํ๋ฆฟ ์์ง์ ๋ํ ์ฌ์ฉ๋ฒ๋ง ๋ณด๊ณ ๊ธํ๊ฒ ์ฌ์ฉํ๋ ค๊ณ ํ๋๋ฐ,
๊ทธ๋ฐ ๋ถ๋ถ๋๋ฌธ์ ์คํ๋ ค ์๊ฐ์ด ๋ ๋ง์ด ๋ค์ด๊ฐ๋ ๊ฒ ๊ฐ๋ค.
๊ธํ ์๋ก ๋์ถฉ ์ฌ์ฉ๋ฒ ์๊ฒ์ผ๋ ๋ฐ๋ก ํ๋๊ฒ๋ณด๋ค
์ฌ์ฉํ๊ณ ์ ํ๋ ๋๊ตฌ์ ๋ํด ์ข๋ ํ์ ํ๋๊ฒ ์คํ๋ ค ๋์์ด ๋ ์๋ ์๊ฒ ๋ค ์ถ์๋ค.
๋ค์ ํฌ์คํ ์์๋ post ์์ฒญ์ด ์๋ delete ์์ฒญ์ด๋,
put ํน์ patch ๊ฐ์ ์์ฒญ๋ค์ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ ์ง ์ ์ด๋ณด๊ฒ๋ค.
์ฐธ๊ณ ํ ์ฌ์ดํธ
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
23/11/25 TIL __ array hash ์๋ฃ๊ตฌ์กฐ๋ ์ด๋ค๊ฑธ๊น? (0) | 2023.11.26 |
---|---|
23/11/24 TIL __ ejs๋ฅผ ์ด์ฉํด express ํ๊ฒฝ์์ ์ค๊ณ๋ ๋ด์ฉ์ ๋ณด์ฌ์ฃผ์ 2 (1) | 2023.11.25 |
23/11/22 TIL __ express validator ์ฌ์ฉ๊ธฐ (0) | 2023.11.22 |
23/11/21 TIL __ ESM๊ณผ CommonJs ์ฐจ์ด ๋ฐ ESM๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ ์คํจ. (0) | 2023.11.22 |
23/11/20 TIL __ erd cloud ์ฌ์ฉ๋ฒ!! erd ๋ง๋ค๊ธฐ (0) | 2023.11.20 |