๋ชฉ์ฐจ
์ ๋ฒ ํฌ์คํธ๊น์ง MongoDB๋ฅผ ์๋ฒ์ ์ฐ๊ฒฐํ๊ณ DB์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์ค๋ ๊ฒ๊น์ง ์๋ฃํ์๋ค.
์ด๋ฒ์๋ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ํ์ด์ง๋ฅผ ์ ์ํด๋ณด์!
1. EJS (Embedded JavaScipt Template)
1) ๊ฐ๋จํ๊ฒ ์์๋ณด๊ธฐ
EJS๋ ํ ํ๋ฆฟ ์์ง์ด๋ค.
ํ ํ๋ฆฟ ์์ง์ด๋, DB๋ API์ ๋ฐ์ดํฐ์ ๋ฏธ๋ฆฌ ์ ์๋ ํ ํ๋ฆฟ์ ํฉ์ณ์ ํ๋์ HTML ํ์ผ์ ์ถ๋ ฅํด์ฃผ๋ ๋ชจ๋์ด๋ค.
ํนํ EJS๋ JavaScript ๋ฌธ๋ฒ์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์ด์ ํ์ฌ ํ๋ก์ ํธ์ ์์ฃผ ๊ฐํธํ๊ฒ ํ์ฉํ ์ ์๋ค.
2) ์ธํ ํ๊ธฐ
(1) ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
npm install ejs
(2) server.js(์๋ฒํ์ผ) ์์
app.set('view engine', 'ejs')
์ ์ฝ๋๋ฅผ ์๋ฒํ์ผ ์๋จ์ ์์ฑํ๋ค.
(3) views ๋๋ ํ ๋ฆฌ / ejs ํ์ผ ์์ฑ
ํ ํ๋ฆฟ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ๊ณ ์ถ์ ๊ฒฝ์ฐ .ejs ํ์ผ์ ์ฌ์ฉํด์ผํ๋ค.
์ด๋ ejs ํ์ผ๋ค์ views๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ๋๋ ํ ๋ฆฌ์์ ๊ด๋ฆฌํด์ผํ๋ค.
์์
ejs ํ์ผ์ ํ๊ทธ๋ค์ html ํ์ผ๊ณผ ๋์ผํ๊ฒ ์์ฑํด์ฃผ๋ฉด ๋๋ค. (์ ์ ํ์ผ ์ ์ฉ๋ ๋์ผ)
(4) ejs ํ์ผ ์๋ฒ ๋ฑ๋ก
//server.js
app.get('/path๋ช
', (request, response) => {
response.render('ํ์ผ๋ช
.ejs');
})
htmlํ์ผ๊ณผ ๋ค๋ฅด๊ฒ sendFile()์ด ์๋
render()๋ฅผ ์ด์ฉํ๋ค.
3) ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉํ๊ธฐ
๋ณธ๊ฒฉ์ ์ผ๋ก DB์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ ๋ค ejsํ์ผ์์ ๋ณด์ฌ์ฃผ๋๋ก ํ์!
๊ทธ ๊ณผ์ ์ ์์ฝํ๋ฉด ์๋์ ๊ฐ๋ค.
1. DB์์ ejsํ์ผ๋ก ๋ฐ์ดํฐ ๋ณด๋ด๊ธฐ
2. ๋ฐ์ดํฐ๋ฅผ ejs ํ์ผ ๋ด ์ํ๋ ์์น์ ๋ฐ์ธ๋ฉ
(1) ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
DB์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋๋ ์ง๋ ๊ธ์์ ๋ค๋ค๋ ๊ฒ์ฒ๋ผ
๋น๋๊ธฐ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๋ค.
์ฌ์ฉ๋ฒ
app.get('/path๋ช
', async (request, response) => {
let result = await db.collection('์ค์ ํ collection๋ช
').find().toArray();
response.render('ํ์ผ๋ช
.ejs', {๋ณ์๋ช
: result});
})
์์ ๊ฐ์ ํ์์ผ๋ก ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ
{๋ณ์๋ช : ๋ฐ์ดํฐ}๋ก renderํจ์์ ์ ๋ฌํ๋ค.
(2) ejs ํ์ผ ๋ด ๋ฐ์ธ๋ฉ
<%= ๋ณ์๋ช
%>
์ด๋ฌํ ํ๊ทธ๋ฅผ ์ด์ฉํด ์ํ๋ ์์น์์
render ํจ์์ ์ ๋ฌํ ๋ณ์๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
์์
MongoDB์ ์ ์ฅ๋์ด์๋ ๋ฐ์ดํฐ ์ด๋ค. ์ด๊ฒ์ ๊ฐ์ ธ์๋ณด์!
//server.js
app.get('/list', async (request, response) => {
let result = await db.collection('post').find().toArray();
response.render('list.ejs', {list : result});
})
//list.ejs
<%= JSON.stringify(list) %>
(JSON.stringify() ๋ฅผ ์ด์ฉํ๋ฉด JSON ํ์์ string์ผ๋ก ๋ฐ๊พธ์ด ์ฃผ๋๋ฐ, ์๊ฐ์ ์ผ๋ก ์ ํ์ธํ ์ ์์ด ์ข๋ค!)
๊ฒฐ๊ณผ
๊ธ ๋ชฉ๋ก์ ์ ์์ ์ผ๋ก ๋ฐ์์จ ๊ฒ์ ํ์ธํ ์ ์๋ค!
๋ค์ ํฌ์คํธ์์ DB ๋ชฉ๋ก์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด์ ๊ธ ๋ชฉ๋ก ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด๋ณด์!
'๐ | WEB DEV > NodeJS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[NodeJS+Express] 8. EJS ๋ฌธ๋ฒ ์ ๋ฆฌ (0) | 2023.10.09 |
---|---|
[NodeJS+Express] 7. EJS ํ์ผ ๋ด JS๋ฌธ๋ฒ ์ฌ์ฉ & ํ์ผ ๋ด .ejsํ์ผ ์ฝ์ (0) | 2023.10.09 |
[NodeJS+Express] 5. MongoDB์์ ๋ฐ์ดํฐ ๊บผ๋ด๊ธฐ (0) | 2023.09.24 |
[NodeJS+Express] 4. MongoDB ํ์ฌํด์ฃผ๊ธฐ (0) | 2023.09.24 |
[NodeJS+Express] 3.์ ์ ํ์ผ ๋ฃ์ด์ฃผ๊ธฐ (cssํ์ผ ๋ฑ๋ก) & Bootstrap ์ด์ฉํ๊ธฐ (0) | 2023.09.23 |
๋๊ธ