๐ | WEB DEV/NodeJS16 [NodeJS+Express] 13. formํ๊ทธ์์ PUT, DELETE ์์ฒญํ๊ธฐ & MongoDB ์์ ๋ฌธ๋ฒ + form ํ๊ทธ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด GET, POST ์์ฒญ๋ง ๊ฐ๋ฅํ๋ค. ํ์ง๋ง PUT, DELETE ๋ฑ์ ํ์ฉํ๋ฉด ๋ ์ข์ API์ ๊ธฐ์ค์ ๋ถํฉํ ์ ์์ ๊ฒ์ด๋ค. ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์! 1. method-override method-override ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ๋ฅํ๋ค. ์ค์น npm install method-override import //server.js const methodOverride = require('method-override') app.use(methodOverride('_method')) ์๋ฒํ์ผ ์ต์๋จ์ ์ ์ฝ๋๋ฅผ ์์ฑํด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ถํฐ ํ์ํ ๊ฒ๋ค์ ๊ฐ์ ธ์จ๋ค. 1) form ํ๊ทธ ์์ //edit.ejs ... ?_method=PUT ์ act.. 2023. 10. 15. [NodeJS+Express] 12. ๊ธ ์์ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ ์ด๋ฒ์๋ ๊ธ์ ์์ ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด์. 0. ๋ค์ด๊ฐ๊ธฐ์ ๊ธ์ ์์ ํ๋ ๊ณผ์ ์ ์์ฝํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค. 1) ๊ธ ๋ง๋ค ์กด์ฌํ๋ ์์ ๋ฒํผ ํด๋ฆญ 2) ์์ ํ์ด์ง์์ ๊ธ ์์ (์์ ๋์ ํ์ด์ง์ ๋ด์ฉ์ด ๊ธฐ์ ๋์ด์์) 3) ์์ ์๋ฃ ๋ฒํผ ๋๋ฅด๋ฉด DB์ ๋ฐ์ดํฐ ์ ์ก ํ ์์ ์๋ฃ ์ด๋ฌํ ๊ณผ์ ์ ๊ฑฐ์ณ ๊ตฌํ์ ํด๋ณด์! 1. ์์ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ 1) ์์ ํ์ด์ง (1) ์๋ฒํ์ผ ์ธํ ์์ ํ์ด์ง์ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด ์์ ๋์์ธ ๋ฐ์ดํฐ๊ฐ ๊ธฐ์ ๋์ด์๋ค. //server.js app.get('/edit/:num', async(request, response) => { try { let result = await db.collection('post').findOne({_id : new ObjectId(request.params.. 2023. 10. 15. [NodeJS+Express] 11. URLํ๋ผ๋ฏธํฐ (์์ธํ์ด์ง ๋ง๋ค๊ธฐ) ์ด๋ฒ์๋ URL ํ๋ผ๋ฏธํฐ ๋ฌธ๋ฒ์ ์ด์ฉํด ์์ธํ์ด์ง๋ฅผ ์ ์ํด๋ณด์. 0. ์์ธํ์ด์ง ํํ ์ง๊ธ๊น์ง๋ ๋ฃจํธ('/')์์ ์ง์ ์ ์ํ๋ ํ์ด์ง๋ค์ ์ ์ํ๋ค๋ฉด ์์ธํ์ด์ง๋ /parent/child/... ์ ํํ์ด๋ค. ์ด๊ฒ์ ์ด์ฉํ๋ฉด url์ ์ผ๊ด์ฑ์ ๋ถ์ฌํ ์ ์๊ณ ์กฐ๊ธ ๋ ๊ฐ๊ฒฐํ๊ฒ ์ฌ์ดํธ๋ฅผ ๊ตฌ์ฑํ ์ ์์ ๊ฒ์ด๋ค. ์์ธํ์ด์ง๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์ ์ด๋ป๊ฒ ํด์ผํ ๊น? /page/detail1, /page/detail2, ... ์ด๋ ๊ฒ ํ๋์ฉ ๋ง๋ค์ด๋ ๊ฐ๋ฅํ์ง๋ง, ํ์ด์ง ์๋งํผ ๋ง๋ค์ด์ผํ๋ ๊ฒ์ ๋๋ฌด๋๋ ๋นํจ์จ์ ์ด๋ค. ์ด๊ฒ์ ๊ฐํธํ๊ฒ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฟ์์ง๋ง ๊ทธ์ค ํ๋๊ฐ ๋ฐ๋ก URL ํ๋ผ๋ฏธํฐ ๋ฌธ๋ฒ์ด๋ค. 1. URL ํ๋ผ๋ฏธํฐ ๋ฌธ๋ฒ ํํ /๋ถ๋ชจurl/:์์url ์์ ๊ฐ์ด /:์์url ์ด URLํ๋ผ๋ฏธํฐ ๋ฌธ๋ฒ์ด๋ค. ์ด๋ฅผ.. 2023. 10. 15. [NodeJS+Express] 10. ๊ธ ์์ฑ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ (MongoDB ๋ฐ์ดํฐ ์ฝ์ ) ์ด๋ฒ์๋ ๊ธ ์์ฑ ๊ธฐ๋ฅ์ ๋ง๋ค์ด๋ณด์! 0. ์์ํ๊ธฐ์ .. ๋จผ์ ๊ธ ์์ฑ๊ธฐ๋ฅ์ ๋ง๋๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? ํด๋ผ์ด์ธํธ๊ฐ ์์ฑํ ๊ธ์ ์๋ฒ์ post ์์ฒญ์ ํ๋ฉด ์๋ฒ๋ ๊ทธ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฐ๋ฅธ ํ์์ธ์ง ํ์ธ์ ํ ํ, ์ด์์ด ์๋ค๋ฉด DB์ ๋ฑ๋ก์ ํ ์ ์๋๋ก ํด์ฃผ์ด์ผํ ๊ฒ์ด๋ค. (์ ์ ๊ฐ ์ง์ DB๋ฅผ ๊ฑด๋๋ฆฌ๋๋ก ํด์๋ ์๋ ๊ฒ์ด๋ค..) 1. ๊ธ ์์ฑ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ 1) ํ์ผ ์์ฑ ๊ธ์ ์์ฑํ form์ ๋ด์ ํ์ผ์ ํ๋ ์์ฑํ ๋ค ์๋ฒ์ ๋ฑ๋กํด์ค๋ค. //write.ejs ... //server.ejs app.get('/write', (request, response) => { response.render('write.ejs'); }) 2) ํ์ผ ์ค์ ๊ธ์ ์์ฑํด์ ๋ณด๋ด๊ธฐ ์ํ ์ค์ ์ ํด์ฃผ์ด์ผํ๋ค. (1) EJSํ์ผ .. 2023. 10. 14. [NodeJS+Express] 9. RESTful API๋? ์ฌ์ฉ์๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ๋ฐ์ DB์ ์ ์ฅํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ ์ RESTful API ์ ๋ํ ๊ฐ๋ ์ ์์๋ณด์! 1. ์๋ฒ๋ก์ ์์ฒญ ์๋ฒ๋ '์์ฒญ'์ ๋ฐ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ํ๋ ํ๋ก๊ทธ๋จ์ผ๋ก ํ ์ค ์์ฝํ ์ ์๋ค. ์ด๋ ์์ฒญ์ ์๋ฌด๋ฐ ๋ฐฉ์์ผ๋ก ํ๋ ๊ฒ์ด ์๋ ์ ํด์ง ํ์์ ๋ฐ๋ผ์ผ ํ๋ค. ๋ง์ฝ ์ ์ ๊ฐ ์๋ฒ์ ์์ฒญ์ ํ ๋์๋ method ์ url ์ ์ ํํ๊ฒ ๋ช ์ํด์ผํ๋ค. 1) method์ ์ข ๋ฅ GET : ๋ฐ์ดํฐ ๋ฐ๊ธฐ ์์ฒญ POST : ๋ฐ์ดํฐ ๋ณด๋ด๊ธฐ ์์ฒญ UPDATE, PUT : ๋ฐ์ดํฐ ์์ ์์ฒญ DELETE : ๋ฐ์ดํฐ ์ญ์ ์์ฒญ ... ์ฃผ๋ก ์ฌ์ฉํ๋ method์ ์ข ๋ฅ๋ ์์ ๊ฐ๋ค. 2) URL /path๋ช ๊ณผ ๊ฐ์ ์๋ฒ์ ๋ฑ๋ก๋์ด์๋ url์ ์์ฒญํด์ผํ๋ค. url์ endpoint ๋ผ๊ณ ํํํ๊ธฐ๋ ํ๋ค. .. 2023. 10. 11. [NodeJS+Express] 8. EJS ๋ฌธ๋ฒ ์ ๋ฆฌ ์ด์ 2๊ฐ์ ํฌ์คํธ์์ ๋ค๋ฃจ์๋ EJS ๋ฌธ๋ฒ์ ๋ํด์ ๊ฐ๋จํ ์ ๋ฆฌํด๋ณด์! 1. - JS ๋ฌธ๋ฒ์ EJS ํ์ผ ๋ด์์ ์ฌ์ฉํ ๋ ์์ HELLO! ๊ฒฐ๊ณผ 2. - ์ฌ์ด์ ๋ค์ด์ค๋ ๋ฐ์ดํฐ๊ฐ html์ด์ด๋ escapeํ์ฌ ๋ฌธ์์ด๋ก ์ถ๋ ฅ ์์ ๊ฒฐ๊ณผ 3. - ์ฌ์ด์ ๋ค์ด์ค๋ ๋ฐ์ดํฐ๊ฐ html์ด๋ผ๋ฉด ์ค์ html ๋ธ๋ก ์์ฑ (์ฆ, include() ๋ฑ ํน์ํ ๋ฌธ๋ฒ ์ฌ์ฉ ํน์ DB์์ html ๋ฐ์์ฌ ๋ ํ์ฉ) ์์ //footer.ejs @KassidBoard ๊ฒฐ๊ณผ 2023. 10. 9. [NodeJS+Express] 7. EJS ํ์ผ ๋ด JS๋ฌธ๋ฒ ์ฌ์ฉ & ํ์ผ ๋ด .ejsํ์ผ ์ฝ์ ์ด๋ฒ์๋ ์ ๋ฒ ํฌ์คํธ์ ์ด์ด์ EJS ๋ฌธ๋ฒ์ ๋ํด์ ์ข ๋ ์์๋ณด์! 1. EJS ํ์ผ ๋ด JS๋ฌธ๋ฒ ์ฌ์ฉ ejs ํ์ผ ๋ด์์๋ JS๋ฌธ๋ฒ์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋ค! ์ฌ์ฉ๋ฒ ์์ฒ๋ผ ์ผ๋ก JS๊ตฌ๋ฌธ์ ๊ฐ์ธ์ ์ฌ์ฉํ๋ฉด๋๋ค. ์์์ ํจ๊ป ์ดํด๋ณด์. ์์1 Hello ๊ฒฐ๊ณผ1 for๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ํ๊ทธ๋ฅผ ๋ฐ๋ณตํ ๋ ์์ ๊ฐ์ ํ์์ ์ฌ์ฉํ๋ค. ์์2 HELLO!! Hello ๊ฒฐ๊ณผ2 if๋ฌธ๋ ๋ฌธ์ ์์ด ์ ์์๋ํ๋ค! 2. ํ์ผ ๋ด ejs ํ์ผ ์ฝ์ ejsํ์ผ ๋ด์ ๋ค๋ฅธ ejs ํ์ผ์ ๊ฐ์ ธ์์ ๋ถ์ฌ๋ฃ์ ์ ์๋ค. nav๋ฐ ํน์ footer ๋ฑ ํ์ด์ง๋ง๋ค ๊ณ์ํด์ ๋ฐ๋ณต๋๋ ์์๋ค์ ejs ํ์ผ๋ก ๋ฐ๋ก ์์ฑํ ๋ค ๊ทธ ํ์ผ์ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ผ๋ก ๋ณด๋ค ๊ฐํธํ๊ฒ ๊ตฌํํ ์ ์๋ค. ์ฌ์ฉ๋ฒ server.js์์ ejsํ์ผ์ ๋ฐ์ดํฐ.. 2023. 10. 9. [NodeJS+Express] 6. EJS๋ก MongoDB ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉํ๊ธฐ ์ ๋ฒ ํฌ์คํธ๊น์ง 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 ๋๋ .. 2023. 10. 8. [NodeJS+Express] 5. MongoDB์์ ๋ฐ์ดํฐ ๊บผ๋ด๊ธฐ ์ด๋ฒ์๋ MongoDB์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์๋ณด์! 1. MongoDB์ ๋ฐ์ดํฐ ํํ ๊บผ๋ด์ค๊ธฐ ์ ์ ์ฌ์ดํธ์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด๋ณด์. ์ธํ ์ด ์๋ฃ๋์๋ค๋ฉด ์ด๋ฌํ ํํ๋ก DB / collection ์ด ๋ฑ๋ก๋์ด์์ ๊ฒ์ด๋ค. [INSERT DOCUMENT]๋ฅผ ๋๋ฌ์ ์๋์ ๊ฐ์ด {Key: Value}๋ฅผ ์ ๋ ฅํด๋ณด์. ์ด๋ ๊ฒ ์ ๋ค์ด๊ฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค! ์ ํ ๋ธ๋ก์ด document์ธ ๊ฒ์ด๋ค. โป _id ๋? document ์์ฑ ์ _id ๋ผ๋ ํญ๋ชฉ๋ ํจ๊ป ์์ฑ์ด ๋๋๋ฐ, ์ด๋ document ๊ฐ ๊ตฌ๋ถ์ ์ํ id ์ด๋ค. ์ด๋ ObjectId ๋ผ๋ ๋๋ค ๋ฌธ์๋ฅผ ์ ๋ ฅํ๋๋ฐ ๋ช๊ฐ์ง ํน์ง์ด ์๋ค. 1. ์ค๋ณตX / 2. ๋จผ์ ๋ง๋ค์๋ก ๋ฎ์ ObjectId / 3. ObjectId ๋์ ์์๋ก ์ค์ ๊ฐ๋ฅ(e.g.. 2023. 9. 24. ์ด์ 1 2 ๋ค์ ๋ฐ์ํ