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

MongoDB7

[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] 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.
[NodeJS+Express] 4. MongoDB ํƒ‘์žฌํ•ด์ฃผ๊ธฐ ์ง€๊ธˆ๊นŒ์ง€ ์„ธํŒ…ํ•œ ์„œ๋ฒ„์— DB๋ฅผ ๋‹ฌ์•„๋ณด์ž! 1. DB ํ†บ์•„๋ณด๊ธฐ 0) DB๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  ์›น ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ค‘์š”ํ•œ ๊ฒƒ ์ค‘ ํ•˜๋‚˜๋Š” ์‚ฌ์šฉ์ž๋“ค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด DataBase(DB)์ด๋‹ค! ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด์šฉํ•ด ๋น ๋ฅธ ๋ฐ์ดํ„ฐ์˜ ์ž…์ถœ๋ ฅ๊ณผ ๋Œ€์šฉ๋Ÿ‰ ๋ณด๊ด€์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 1) DB์˜ ์ข…๋ฅ˜ DB์˜ ์ข…๋ฅ˜์—๋Š” ๊ณ„์ธตํ˜•, ๋„คํŠธ์›Œํฌํ˜•, ๊ด€๊ณ„ํ˜•, ๊ฐ์ฒด์ง€ํ–ฅ, ๋น„๊ด€๊ณ„ํ˜•์ด ์žˆ๋‹ค. ์ด์ค‘ ์ตœ๊ทผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ด€๊ณ„ํ˜•๊ณผ ๋น„๊ด€๊ณ„ํ˜•์ด๋‹ค. ์ด ๋‘˜์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด์ž. - ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‰ฝ๊ฒŒ ์ด๊ฒƒ์„ ์„ค๋ช…ํ•˜๋ฉด ์—‘์…€๊ณผ ๋น„์Šทํ•˜๋‹ค. ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ํ–‰์”ฉ ์ฐจ๋ก€๋กœ ๋ณด๊ด€ํ•œ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” DBMS(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์‹œ์Šคํ…œ)๋ฅผ ์„ค์น˜ํ•ด์•ผํ•œ๋‹ค. ex) MySQL, Oracle, SQL.. 2023. 9. 24.
๋ฐ˜์‘ํ˜•