๐Ÿ“ฒ Database connection

๊น€์ฒ ์ค€ยท2022๋…„ 3์›” 3์ผ
0

Back-end

๋ชฉ๋ก ๋ณด๊ธฐ
2/3

์ด์ „ ํฌ์ŠคํŒ…์—์„œ ๊ตฌ์„ฑํ•ด๋†“์•˜๋˜ ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•ด๋ณด์ž.

๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” mongodb๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.

mondoDB๋ฅผ node.js์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” mongoose ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

mongoose๋Š” node.js ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๋Š” MongoDB ๊ธฐ๋ฐ˜ ODM(Object Data Modelling)๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฌธ์„œ๋“ค์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

์„ค๊ณ„

1. npm add mongoose dotenv

mongoose์™€ dotenv ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์ค€๋‹ค.
dotenv๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๋“ค์„ ํŒŒ์ผ์— ๋„ฃ๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฐœ๋ฐœ ๋„๊ตฌ์ด๋‹ค.

2. .env ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํŒŒ์ผ ์ƒ์„ฑ

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— .env ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์ค€๋‹ค.
์„œ๋ฒ„์—์„œ ์‚ฌ์šฉํ•  ํฌํŠธ์™€ mongoDB ์ฃผ์†Œ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

.env

PORT = 4000
MONGO_URI = mongodb://localhost:27107/blog

3. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์กฐํšŒ

ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„ค์น˜ํ•œ dotenv ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์™€ configํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” process.env๋ฅผ ํ†ตํ•ด ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

src/index.js

const Koa = require("koa")
require("dotenv").config()

const app = new Koa()

const {PORT,MONGO_URI} = process.env

const port = PORT || 4000

app.listen(port, () => {
	console.log(`Listening to ${port}` )
})

4. ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ

mongoose๋ฅผ ์ด์šฉํ•ด ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค.

const mongoose = require("mongoose")
const {PORT,MONGO_URI} = process.env

mongoose
  .connect(MONGO_URI)
  .then(() => {
	console.log("Connected to MONGODB ")
	})
  .catch(e => {
	console.error(e)
	})

connect()ํ•จ์ˆ˜๋Š” promise๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

5. ์Šคํ‚ค๋งˆ ์ƒ์„ฑ

์Šคํ‚ค๋งˆ
์ปฌ๋ ‰์…˜์— ๋“ค์–ด๊ฐ€๋Š” ๋ฌธ์„œ ๋‚ด๋ถ€์˜ ๊ฐ ํ•„๋“œ๊ฐ€ ์–ด๋–ค ํ˜•์‹์œผ๋กœ ๋˜์–ด ์žˆ๋Š”์ง€ ์ •์˜ํ•˜๋Š” ๊ฐ์ฒด
๋ชจ๋ธ
์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“œ๋Š” ์ธ์Šคํ„ด์Šค๋กœ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‹ค์ œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋“ค์„ ์ง€๋‹ˆ๊ณ  ์žˆ๋Š” ๊ฐ์ฒด

// import/export๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด esm library ์‚ฌ์šฉํ•˜์˜€์Œ.
import mongoose from "mongoose"

const {Schema} = mongoose


const PostSchema = new Schema({
	title : String,
  	body : String,
  	tags: [String],
  	publishedDate : {
  		type: Date,
      	default : Date.now
  }
})

์Šคํ‚ค๋งˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ์—๋Š” mongoose ๋ชจ๋“ˆ์˜ Schema๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๊ฐ ํ•„๋“œ ์ด๋ฆ„๊ณผ ํ•„๋“œ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ •๋ณด๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

6. ๋ชจ๋ธ ์ƒ์„ฑ

๋ชจ๋ธ์„ ๋งŒ๋“ค ๋•Œ๋Š” mongoose.model ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.


import mongoose from "mongoose"

const {Schema} = mongoose


const PostSchema = new Schema({
	title : String,
  	body : String,
  	tags: [String],
  	publishedDate : {
  		type: Date,
      	default : Date.now
  }
})
const Post = mongoose.model("Post",PostSchema)

export default Post

0๊ฐœ์˜ ๋Œ“๊ธ€