๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[๊ฐœ๋ฐœ] Practice/Node.js MongoDB

[Node.js / MongoDB] Database ์— ์ž๋ฃŒ ์ €์žฅํ•˜๋Š” ๋ฒ•

by Connecting-the-dots 2022. 3. 11.
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ก ์‹ค์Šต ํฌ์ธํŠธ!

  • MongoDB ์— post ๋ผ๋Š” ์ด๋ฆ„์˜ collection ์„ ์ƒ์„ฑํ•˜์—ฌ ํ…Œ์ŠคํŠธ๋กœ name ์ด seoyun, age ๊ฐ€ 30 ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด์•˜๋‹ค.
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ํ† ๋Œ€๋กœ ํ•˜์—ฌ, /add ๊ฒฝ๋กœ๋กœ POST ์š”์ฒญํ•  ๊ฒฝ์šฐ ํผ์— ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ DB ์— ์ถ”๊ฐ€ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์งœ๊ณ  MongoDB ์—์„œ ํ™•์ธํ•ด๋ณด์•˜๋‹ค.

๐Ÿ’œ Database / collection ๋งŒ๋“ค๊ธฐ

1. MongoDB Atlas ๋ฉ”์ธ ๋Œ€์‹œ๋ณด๋“œ์—์„œ Browse Collections ๋ผ๋Š” ๋ฒ„ํŠผ ํด๋ฆญ

 

2-1. Add My Own Data ๋ฒ„ํŠผ ํด๋ฆญ

 

2-2. Add My Own Data ๋ฒ„ํŠผ์ด ์žˆ๋Š” ํ™”๋ฉด์ด ์•„๋‹ˆ๋ผ ์•„๋ž˜์™€ ๊ฐ™์ด ํ™”๋ฉด์ด ๋œฌ๋‹ค๋ฉด Create Database ๋ฒ„ํŠผ ํด๋ฆญ

 

3. Database name, Collection name ์„ ์ ์ ˆํ•˜๊ฒŒ ์ •ํ•ด์ค€ ํ›„ Create ๋ฒ„ํŠผ ํด๋ฆญ


๐Ÿ’œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐ DB ํ™•์ธํ•˜๊ธฐ

๐Ÿค JavaScript ๋กœ ์ฝ”๋“œ์งœ์„œ DB ์™€ ํ†ต์‹ ํ•ด๋ณด๊ธฐ

var db;

MongoClient.connect('mongodb+srv://admin:๋น„๋ฐ€๋ฒˆํ˜ธ๋Š”๋น„๋ฐ€@cluster0.e8wvg.mongodb.net/myFirstDatabase?retryWrites=true&w=majority', function(err, client){
    if(err) {return console.log(err)};

    db = client.db('app_todo');
    
    // post ๋ผ๋Š” db.collection ์— name ์ด seoyun, age ๊ฐ€ 30 ์ธ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ํ•ด๋ณด๊ธฐ
    // ์ด ๋ถ€๋ถ„ ์ฝ”๋“œ๋Š” ์•„๋ž˜ ์ฝ”๋“œ๋ธ”๋Ÿญ์—์„œ ํ™•์ธ

    app.listen(8080, function(){
        console.log('listening on 8080');
    });
})
  • ํŽ˜์ด์ง€ ์ „์ฒด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ „์—ญ ๋ณ€์ˆ˜ db ๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.
    var db;
  • client.db('app_todo') ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ app_todo ๋ผ๋Š” Database ์— ์ ‘์†ํ•ด๋‹ฌ๋ผ๋Š” ๋ช…๋ น์„ ํ•ด์ค€๋‹ค. 
    db = client.db('app_todo');
  • ํ…Œ์ŠคํŠธ๋กœ post ๋ผ๋Š” db.collection ์— name ์ด seoyun, age ๊ฐ€ 30 ์ธ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ํ•ด๋ณด์•˜๋‹ค.
    • ๋จผ์ €, db.collection ์—์„œ post ๋ฅผ ์„ ํƒํ•œ๋‹ค.
      db.collection('post')
    • post ์— insertOne() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋ฃŒ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
      insertOne(์ถ”๊ฐ€ํ•  ์ž๋ฃŒ, ์ฝœ๋ฐฑํ•จ์ˆ˜)
    • ์ถ”๊ฐ€ํ•  ์ž๋ฃŒ๋Š” Object ํ˜•์‹์ด์–ด์•ผ ํ•œ๋‹ค.
      {name : 'seoyun', age : 30}
  • ์œ„์˜ ๋‚ด์šฉ์„ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
db.collection('post').insertOne({name : 'seoyun', age : 30}, function(err, result){
    // ์ •์ƒ์ ์œผ๋กœ ์ž๋ฃŒ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค๋ฉด console ์— '์ €์žฅ ์™„๋ฃŒ' ๋ฌธ๊ตฌ ๋„์šฐ๊ธฐ
    console.log('์ €์žฅ ์™„๋ฃŒ');
});

 

๐Ÿค MongoDB ์—์„œ DB ์ €์žฅ ํ™•์ธํ•˜๊ธฐ


๐Ÿ’œ ํผ์—์„œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๋Š” ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐ DB ํ™•์ธํ•˜๊ธฐ

  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ํ† ๋Œ€๋กœ ํ•˜์—ฌ, ๋‚ด์šฉ์„ ์‚ด์ง ๋ฐ”๊พธ์–ด ๊ธ€์“ฐ๊ธฐ ํŽ˜์ด์ง€์—์„œ ํผ์— ๋‚ด์šฉ์„ ์ž…๋ ฅํ•œ ํ›„ Submit ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ํผ์— ์ž…๋ ฅ๋œ ๋‚ด์šฉ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ DB ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ์งœ๊ณ  DB ์—์„œ ํ™•์ธํ•ด๋ณด์•˜๋‹ค.

๐Ÿค JavaScript ๋กœ ์ฝ”๋“œ์งœ๊ธฐ

// ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ /add ๊ฒฝ๋กœ๋กœ POST ๋ฅผ ์š”์ฒญํ•˜๋ฉด
app.post('/add', function(req, res){
    res.send('์ „์†ก์™„๋ฃŒ');
    
    // ํผ์— ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ db.collection ์ค‘ post ์— ์ €์žฅ๋œ๋‹ค.
    db.collection('post').insertOne({ํ• ์ผ: req.body.content, ๋งˆ๊ฐ์ผ : req.body.date}, function(err, result){
        console.log('๋ฐ์ดํ„ฐ ์ €์žฅ ์™„๋ฃŒ!')
    })
})

๐Ÿค ๊ธ€์“ฐ๊ธฐ ํŽ˜์ด์ง€์—์„œ ํผ์— ๋ฐ์ดํ„ฐ ์ž…๋ ฅํ•˜๊ธฐ

๐Ÿค MongoDB ์—์„œ DB ์ €์žฅ ํ™•์ธํ•˜๊ธฐ

728x90
๋ฐ˜์‘ํ˜•