본문 바로가기

코딩/NodeJS

nodejs랑 mongodb 연결해보기

반응형

백엔드 개발자는 API와 DB를 다룬다고 했었었는데

지금까지는 API만 다뤄봤고

이제 DB도 한번 다뤄봅시다

 

DB에는 관계형 DB랑 NoSQL이란게 있음

MySQL, MariaDB 같은게 관계형 DB고

MongoDB가 NoSQL임

 

이런 복잡하고 지루한 설명 다 집어치우고

관계형 DB는 엑셀처럼 데이터를 저장하는거고

NoSQL은 그래프, object(JS의 그 오브젝트 맞음) 등의 형태로 데이터를 저장함

나는 오늘 MongoDB를 쓸건데 걔는 object 형태로 데이터를 저장함

{
	이름 : '김박사',
	나이 : 30,
	성별 : 남성
}

이렇게 저장한다는 뜻임

 

1. MongoDB Atlas 설정하기

자 그럼 바로 mongodb 한번 설정해볼까요?

mongodb를 컴퓨터에 바로 설치해도 되는데

다운받고 설치하고 그런거 귀찮으니깐

mongodb atlas라는걸 한번 써봅시다

https://www.mongodb.com/cloud/atlas/register

 

MongoDB Atlas

Get started free. No credit card required.

www.mongodb.com

여기 링크 들어가서 회원가입 하세여

그럼 뭐 입력하라고 하는데 대충 눈치껏 채워넣으면 됩니다

요금제 선택은 꼭! 무료 요금제로 해야 함

당연히 무료 안하면 돈내야한다는 점 주의하기

 

그다음은 서버 위치 선택하는건데 서울 서버 선택하면 됨

 

다음은 DB 접속 계정 만드는건데 기억할 수 있는걸로 만드세여

까먹으면 nodejs에서 DB 접속 못함

그리고 SECURITY탭에 있는 Database Access로 들어가서,

저기 우측에 Actions 항목에 있는 [EDIT]버튼 누르면 아래와 같은 화면이 뜸

여기 Built-in Role 부분에서 Atlas admin으로 설정을 바꿔줘야 함

바꾸고 나서 하단에 있는 [Update User]버튼 꼭 누르기

 

자 이제 다 끝나감

이번엔 SECURITY 탭의 Network Access로 들어가서

IP주소 업데이트해줘야 함

ALLOW ACCESS FROM ANYWHERE버튼 눌러주면 저렇게 0.0.0.0/0으로 IP가 설정됨

이번엔 DEPLOYMENT 탭에서 Database 항목으로 들어가서 [Browse Collections]버튼 누릅시다

그럼 이렇게 [Create Database] 버튼 눌러서 DB 만들 수 있음

DB이름이랑 Collection이름 잘 정해서 Create 하면 됨

다시 DEPLOYMENT탭의 Database항목으로 들어오면 Connect버튼이 보일거임

저거 눌러주세요

그럼 이런 화면 뜨는데, Connect your application누르면 됨

Node.js 버전은 걍 최신버전 골라주면 되고

및에 무슨 주소 보이나요?

mongodb+srv://bebsae:<password>@cluster0.kotmhwt.mongodb.net/?retryWrites=true&w=majority

이런 주소가 보이는데 저기 bebsae는 내 DB의 접근 ID임

<password>는 DB 접근 비밀번호임

저기에다가 아까 설정한 비밀번호 넣으면 DB 접속 가능

(<password>라고 되어있다고 <1234> 이렇게 비밀번호 넣으면 안됨. 괄호(<>)이거 지우고 그냥 1234 해야하니 주의하기)

 

자 이제 DB 셋팅 끝

생각보다 길었다 그죠

 

2. NodeJS에 MongoDB 연결하기

npm install mongodb

자 우선 터미널에다가 위 명령어 입력해서 mongodb 라이브러리 설치해야함

 

설치 끝났으면 server.js에 코드 좀 넣어봅시다

참고로 server.js는 예전 포스팅에서 만들어둔 파일임

이 포스팅은 시리즈로 작성되고 있음을 여기서 알려드립니다

2023.01.20 - [코딩/NodeJS] - NodeJS로 서버 만들고 실행해보기

 

NodeJS로 서버 만들고 실행해보기

서버 뭔가 거창하고 어려울 것 같은데 우린 이미 지난 포스팅에서 준비를 다함 2023.01.19 - [코딩/NodeJS] - 백엔드 공부를 위한 NodeJS 알아보기 + 설치 백엔드 공부를 위한 NodeJS 알아보기 + 설치 개발

bebutae.tistory.com

여길 참조하세여

 

암튼 코드 넣읍시다

// 몽고DB랑 연결해주는 코드
const MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb+srv://bebsae:비밀번호@cluster0.kotmhwt.mongodb.net/?retryWrites=true&w=majority', 
function(에러, client){
    if(에러) {
        return console.log(에러)
    }
    // 나는 몽고db atlas에 todoapp이라는 이름의 데이터베이스를 만들어둠
    // 이 코드로 todoapp이라는 데이터베이스에 접속 가능
    db = client.db('todoapp');

    app.listen(8080, function(){
        console.log('db connected')
    })
})

server.js에 이렇게 코드 집어넣고 서버 구동하면 DB 연결됨

아 근데 혹시 오류가 나나여?

지난번에 우리가

app.listen(8080, function(){
    console.log('서버 실행 중');
})

server.js에 이렇게 코드 짰던거 기억남??

 

저기 보면 8080이 포트번혼데 우리가 새로 짠 코드에도 8080포트로 연결한다고 되어있음

 

같은 포트를 2군데서 쓰겠다고 하면 싸움남;;

그래서 오류가 발생하는겁니다

 

그러니 우리가 지난번에 작성한 코드는 주석처리해주세요

주석 어떻게 처리하는지 모르겠따 ?

/*
// listen(서버 띄울 포트번호, 띄운 후 실행할 코드)
app.listen(8080, function () {
    console.log("서버 실행 중");
});
*/

자 이렇게 /*랑 */로 감사주면 됩니다

 

끝이예요 DB 연결 다 해버림

근데 우리 DB에 데이터도 넣고싶고 그렇죠? 그건 다음 포스팅을 봅시다

 

반응형