Node.js

node>MongoDB와 서버 연결하려면

연습노트 2024. 7. 25. 04:22

DB에 글을 저장할 준비가 다 된 것 같은데 

DB에 데이터 입출력은 누가합니까?

유저가 직접 글을 DB에 집어넣고 그러면 편할거같은데 

그렇게 해버리면 3일 후에 금방 서비스 종료하는 것입니다.

 

유저에게 다이렉트로 DB 입출력 권한을 주면

유저가 DB에 이상한 짓을 하면 큰일나기 때문에

중간에 검열하는 친구가 하나 필요합니다.

 

 

 

중간에서 이거저거 검사하는 역할은 서버가 담당합니다. 

예를 들어 글을 하나 DB에 저장하고 싶으면 

1. 유저가 서버로 게시물을 보내고 2. 서버는 그걸 검열해본 후 DB에 저장시켜주면 됩니다.

오늘은 서버가 DB와 통신하는 법을 좀 알아보도록 합시다. 

 

 

 

 

 

서버와 MongoDB 연결

 

서버 프로젝트에서 mongodb를 연결하고 싶으면 

일단 mongodb 라이브러리를 설치합시다. 

 

npm install mongodb@5

터미널 열어서 입력합시다. 

 

 

const { MongoClient } = require('mongodb')

let db
const url = 'mongodb사이트에 있던 님들의 DB 접속 URL'
new MongoClient(url).connect().then((client)=>{
  console.log('DB연결성공')
  db = client.db('forum')
}).catch((err)=>{
  console.log(err)
})

그리고 이런 코드를 서버파일 상단쯤에 추가합니다. 

그러면 mongodb 라이브러리 셋팅 끝 

간단히 설명하면 님들이 호스팅받은 mongodb에 접속하고 접속 결과를 db라는 변수에 저장했을 뿐입니다.

mongodb 라이브러리 사용법이라 굳이 이해할 필요 없습니다. 

 

 

 

 

 

▲ DB접속 URL은 어딨냐면 mongodb 사이트가서 connect 버튼이 어딘가 있을텐데 

눌러서 Driver를 선택해봅시다. 

 

mongodb+srv://DB접속아이디:DB접속비번@cluster0.jea.mongodb.net/?retryWrites=true&w=majority 

그러면 대충 이렇게 생긴게 나오는데 이게 DB접속용 URL입니다.

근데 DB접속용 아이디 / 비번자리에 여러분이 만든 DB접속용 아이디 / 비번을 잘 집어넣읍시다.

mongodb.com 로그인할 때 쓰는 아이디 비번 아님 

 

 

 

 

const { MongoClient } = require('mongodb')

let db
const url = 'mongodb사이트에 있던 님들의 접속 URL'
new MongoClient(url).connect().then((client)=>{
  console.log('DB연결성공')
  db = client.db('forum')

  app.listen(8080, () => {
    console.log('http://localhost:8080 에서 서버 실행중')
  })

}).catch((err)=>{
  console.log(err)
})

그리고 app.listen() 이런 코드도 여기 안으로 옮기는게 좀 더 안정적일 수 있습니다. 

DB접속이 완료 되어야 서버를 띄우는게 좋아보여서요. 

 

 

 

 

 

진짜 잘 되는지 테스트해보고 싶으면

아무 app.get 안에서 db에 데이터저장하는 코드 하나만 써보도록 합시다.

그리고 그 /url로 접속해서 진짜 DB에 뭔가 저장되나 확인해봅시다.  

 

app.get('/news', ()=>{
  db.collection('post').insertOne({title : '어쩌구'})
})

대충 이렇게 코드 짜고 /news 페이지로 접속하면 진짜로 DB에 뭔가 저장되어있을걸요 

근데 하지마십쇼 DB들어가서 임시데이터들 지우기 귀찮음

다음시간엔 DB데이터 출력해서 보여주는 법을 알아보도록 합시다.