๋ชฉ์ฐจ
์ด๋ฒ์๋ MongoDB์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์๋ณด์!
1. MongoDB์ ๋ฐ์ดํฐ ํํ
๊บผ๋ด์ค๊ธฐ ์ ์ ์ฌ์ดํธ์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด๋ณด์.
์ธํ ์ด ์๋ฃ๋์๋ค๋ฉด ์ด๋ฌํ ํํ๋ก DB / collection ์ด ๋ฑ๋ก๋์ด์์ ๊ฒ์ด๋ค.
[INSERT DOCUMENT]๋ฅผ ๋๋ฌ์ ์๋์ ๊ฐ์ด {Key: Value}๋ฅผ ์ ๋ ฅํด๋ณด์.
์ด๋ ๊ฒ ์ ๋ค์ด๊ฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค!
์ ํ ๋ธ๋ก์ด document์ธ ๊ฒ์ด๋ค.
โป _id ๋?
document ์์ฑ ์ _id ๋ผ๋ ํญ๋ชฉ๋ ํจ๊ป ์์ฑ์ด ๋๋๋ฐ,
์ด๋ document ๊ฐ ๊ตฌ๋ถ์ ์ํ id ์ด๋ค.
์ด๋ ObjectId ๋ผ๋ ๋๋ค ๋ฌธ์๋ฅผ ์ ๋ ฅํ๋๋ฐ ๋ช๊ฐ์ง ํน์ง์ด ์๋ค.
1. ์ค๋ณตX / 2. ๋จผ์ ๋ง๋ค์๋ก ๋ฎ์ ObjectId / 3. ObjectId ๋์ ์์๋ก ์ค์ ๊ฐ๋ฅ(e.g. 1, 2, 3, ... )
Mongo DB๋ document DB์ด๋ค. ์ด์ ์ค์ํ ํน์ง์ด
์๋ง์ document ์ค ํน์ 1๊ฐ document๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ ๋น ๋ฅด๋ค๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ๊ทธ ์์ ๋ด์ฉ์ ์ฐพ๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ต๋ค.
๋ฐ๋ผ์ ์ฉ๋์ ๋ง๊ฒ document์ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ข๋ค!
์ด ํ๋ก์ ํธ์์๋ ํ ๊ฐ์ ํฌ์คํธ๊ฐ ํ๋์ document๊ฐ ๋๋๋ก ๊ด๋ฆฌํ ๊ฒ์ด๋ค.
2. ํ์ด์ง ์ ์ ์ DB์ ๋ฐ์ดํฐ ๋ณด์ฌ์ฃผ๊ธฐ
/list ์ ์ ์ํ์๋ DB์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ค ์ ์๊ฒ ํด๋ณด์!
1) server.js ์์ ํ๊ธฐ
๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์ฌ๋์๋ ์๋์ ๊ฐ์ ํ์์ผ๋ก ๊ฐ์ ธ์จ ๋ค Array๋ก ๋ง๋ค์ด์ค๋ค.
์ด๋ฅผ ํ ๋นํ ๋ณ์์๋ ์ปฌ๋ ์ ์ ๋ชจ๋ document๊ฐ ๋ค์ด์๊ฒ ๋๋ค.
await db.collections('์ค์ ํ collection๋ช
').find().toArray()
์ด๋ await ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๊ทธ๊ฒ์ ๋ด์ ํจ์์ ์์ async๋ฅผ ๋ถ์ฌ์ฃผ์ด์ผ ํ๋ค.
โป await์ด๋?
JS๋ ๋น๋๊ธฐ์ฒ๋ฆฌ๋ฅผ ์ํด์ ํ์ฌ ์ฝ๋๊ฐ ์คํ๋๋ ๊ฒ์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ค์์ ์ํํ๋ค.
์ด๋ฅผ ๋ง๊ธฐ ์ํด์๋ 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.
1. callback ํจ์ / 2. .then(Promise์์) / 3. await(Promise์์)
์ฐ๋ฆฌ๊ฐ ๊ตฌํํ๋ ค๋ DB์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ณผ์ ์ ์ฒ๋ฆฌ์๊ฐ์ด ํ์ํ๊ธฐ ๋๋ฌธ์
await์ ์ด์ฉํ์ฌ ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฐ ํ ์งํํด์ผ ์๋ํ๋๋ก ๋ฐ์ดํฐ๋ฅผ ๋ ๋๋งํ ์ ์๋ค.
๋ํ Promise๋ฅผ ๋ฐํํ๋ ํจ์์์ ์ฌ์ฉํ ์ ์๋ค. โผ
2022.02.18 - [๐ | WEB DEV/Vanilla JS] - JS_๋ฌธ๋ฒ (5)_๋๊ธฐ/๋น๋๊ธฐ ์ฒ๋ฆฌ
์๋์ ์ฝ๋๋ฅผ ์์ฑํ์! (๊ฐ์ฅ ์ฒซ๋ฒ์งธ document์ title ๋ ๋๋ง)
app.get('/list', async (request, response) => {
let result = await db.collection('post').find().toArray();
response.send(result[0].title);
})
2) ํ์ธํ๊ธฐ
์ ๋์จ๋ค!
+ ์์์ result ๋ณ์๋ฅผ console.log()๋ก ์ถ๋ ฅํด๋ณด๋ฉด ์๋์ ๊ฐ์ ํํ๋ฅผ ๋ฐํํ๋ค.
๋๊ธ