๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŒŒ | 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.
๋ฐ˜์‘ํ˜•