Gorilla-Kim/Project

[MEMO APP] Back-end/ DB์—ฐ๊ฒฐ (2)

Kim_gorilla 2020. 3. 17. 17:33

 

๐Ÿ‘จ‍๐Ÿ’ป DB์—ฐ๊ฒฐ (2)

 

๐Ÿ“Œ MongoDB์™€ ์„œ๋ฒ„์•ฑ์„ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๊ธฐ.

 

์ง€๋‚œ๋ฒˆ ํฌ์ŠคํŒ…๋•Œ์—๋Š” MongoDB๋ฅผ ์„ค์น˜ํ•ด์ฃผ์—ˆ๊ณ  ์ด DB์™€ ์šฐ๋ฆฌ๊ฐ€ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ์„ ๋„์™€์ฃผ๋Š” Mongoose๋ผ๋Š” ๋ชจ๋“ˆ๋„ ์„ค์น˜ํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” mongoose๋ฅผ ์šฐ๋ฆฌ ์„œ๋ฒ„ํŒŒ์ผ์—์„œ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์‹ค์ œ๋กœ ์—ฐ๊ฒฐ๊นŒ์ง€ ํ•ด์ฃผ๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•ด์ฃผ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

require('mongoose') ํ•œ๋‹ค์Œ์— index.js์—์„œ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ๋ชจ๋“  ์ž‘์—…๋“ค์„ ํ•œ ํŒŒ์ผ์—์„œ ์ž‘์„ฑํ•˜๋ฉด์€ index.js ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ ธ์„œ ๋ชจ๋“  ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์›Œ์งˆ ๋ฟ๋”๋Ÿฌ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›Œ์ง€๊ธฐ ๋•Œ๋ฌธ์— DB์™€ ๊ด€๋ จ๋œ ์ž‘์—…์€ src ํด๋”์•ˆ์— dbํด๋”๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ทธ ์•ˆ์—์„œ ์ž‘์—…์„ ํ•ด์ฃผ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ƒˆ๋กœ ์ƒ์„ฑํ•œ db ํด๋”์•ˆ์—๋Š” index.js ํŒŒ์ผ์ด ์žˆ๊ณ  ์ด ํŒŒ์ผ์—์„œ๋Š” DB ์—ฐ๊ฒฐ๊ณผ ํ•ด์ œ์™€ ๊ด€๋ จ๋œ ํ•จ์ˆ˜๋“ค์„ ์ž‘์„ฑํ•ด ์™ธ๋ถ€์—์„œ ์‰ฝ๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“ค์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

(์ด๋ ‡๊ฒŒ ํ•˜๋Š” ์ด์œ ๋Š”, DB์— ์ ‘๊ทผ์„ ํ•œ ํŒŒ์ผ์—์„œ๋งŒ ๊ฐ€๋Šฅํ•œ๊ฒŒ ์•„๋‹ˆ๋ผ ํ•„์š”์— ๋”ฐ๋ผ ์žฌ ์ƒˆ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์†Œ์Šค์ฝ”๋“œ๋กœ ๋งŒ๋“ค์–ด ๋‹ค๋ฅธ๊ณณ์—์„œ๋„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅ์ผ€ ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.)

const mongoose = require('mongoose');

const mongoUri = 'mongodb://localhost:27017/whereCar';

module.exports = (function () {
  mongoose.promise = global.Promise;

  return {
    connect() {
      mongoose.connect(mongoUri, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
      }).then(
        () => {
          console.log('โœ…  Successfully connected to mongodb!');
        },
      ).catch((e) => {
        console.error(e);
      });
    },
  };
}());

mongoose๋Š” connect๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์›ํ•ด์ฃผ๋ฉฐ, ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์œผ๋กœ๋Š” ํ•ด๋‹น DB์˜ ์œ„์น˜๊ฐ’์„(mondoUri) ๋„ฃ์–ด์ฃผ๊ณ  ๊ทธ ๋‹ค์Œ์—๋Š” ์—ฌ๋Ÿฌ ์˜ต์…˜๋“ค์„ ๋„ฃ์–ด์ฃผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

์œ„์˜ ํ•จ์ˆ˜๋Š” ์ผ๋ฐ˜ ๋ฐฉ์‹๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ connectํ•จ์ˆ˜๊ฐ€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค๋Š” ํŠน์„ฑ์„ ์ด์šฉํ•˜์—ฌ [.then] ๊ณผ [.catch] ๋ผ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์—ฐ๊ฒฐ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ด๋ฃจ์–ด์กŒ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™”๋ฉด์— ๋„์›Œ์ฃผ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

 

์กฐ๊ธˆ ์•„์‰ฌ์šด์ ์€ mongoUri ์™€ ๊ฐ™์ด ์™ธ๋ถ€์— ์•Œ๋ ค์ ธ์„œ ์•ˆ๋˜๋Š” ๋ถ€๋ถ„๋“ค ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ถ€๋ถ„์„ .env ํŒŒ์ผ๋กœ ์˜ด๊ฒจ์„œ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด์ œ src ํด๋” ์•ˆ์— index.js์—์„œ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฉ๊ธˆ ์ž‘์„ฑํ•œ ํŒŒ์ผ๋งŒ ํ˜ธ์ถœํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ๋ง์ด์ฃ 

์ด์ œ ๋‹ค์‹œํ•œ๋ฒˆ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰์‹œ์ผœ ๋ณด๋„๋กํ• ๊ฒŒ์š”.

์•„๋ž˜์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ mongoDB๊ฐ€ ์—ฐ๊ฒฐ์ด ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋œฌ๋‹ค๋ฉด ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ DB์—ฐ๊ฒฐ์„ํ•˜๋Š” ์ž‘์—…์ด์—ˆ๊ณ  ๋ฌด์‚ฌํžˆ ์ด๋ฅผ ๋งˆ์น˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  DB๊ด€๋ จ ์ž‘์—…์ด ๋ชจ๋‘ ๋๋‚œ๊ฒƒ์€ ์•„๋‹ˆ๋ž๋‹ˆ๋‹ค.

 

DB๊ด€๋ จ ์„ค๊ณ„์ž‘์—…์„ ํ•ด์ฃผ์–ด์•ผํ•˜๋Š”๋ฐ์š”. ๋ณดํ†ต์€ ์Šคํ‚ค๋งˆ ์„ค๊ณ„๊ฐ™์€๊ฒƒ๋“ค์„ ํ•ด์ฃผ์–ด์•ผ ํ•˜์ง€๋งŒ... 

์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•  mongoDB๋Š” ๋‹ค๋ฅธ DB์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์Šคํ‚ค๋งˆ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ ์—†๋Š”๊ฐ€๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ๋ณด๋‹จ ์ด๋ฅผํ†ตํ•ด ์–ป๋Š” ์ด์ ์„ ๋ง์”€๋“œ๋ฆฌ์ž๋ฉด, ๊ฐ์ฒด๋‚˜ ๋ฆฌ์ŠคํŠธ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ํ•œ ์นผ๋Ÿผ์— ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด์ฃ .

 

์Šคํ‚ค๋งˆ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋Œ€์‹ ์— mongoDB๋Š” model์ด๋ผ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ถ”๊ฐ€๋  ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ํ˜•์‹(ํ‹€)์„ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๊ณ ๋กœ ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ์ด๋Ÿฌํ•œ ์ž‘์—…๋“ค์„ ํ•ด์ฃผ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.