Node.js

node.js와 mongoDB로 웹 만들기 (4) mongoDB 연결

gamzaggang7 2023. 1. 13. 00:17
728x90

* 개발환경 - 윈도우, VS Code 

 

1. mongoDB Cluster 구축

 

MongoDB Atlas: Cloud Document Database

Cloud-hosted MongoDB service on AWS, Azure, and GCP

www.mongodb.com

위 사이트 들어가서 로그인. 난 구글 아이디로 함.

무료 버전인 'shared' 선택 -> 구글 클라우드, 서울 선택 -> Create Cluster 클릭

Network Access -> Add IP Address 클릭

728x90

ALLOW ACCESS FROM ANYWHERE 선택 후 Confirm 클릭

 

접속할 때 사용할 Username과 Password 설정

 

Database -> Connected -> Connect your application 선택

 

링크 복사 버튼 눌러서 코드 복사

 

 

2. mongoDB 설치

 

 

3. server.js 에 다음 코드 입력

let db;
const db_url = 'mongodb+srv://minji:<password>@cluster0.7aje40r.mongodb.net/?retryWrites=true&w=majority';
MongoClient.connect(db_url, (error, client)=>{
    if (error) {
        return console.log(error);
    } 
    else {
        global.db = client.db('node');    // node: 저장소 이름
        app.listen(8080, ()=>{
            console.log('server on');
        })
    }
})

db_url 의 주소는 복사해둔 코드를 ' ' 안에 넣으면 되고 <password> 부분에는 아까 설정한 비밀번호로 바꾸면 됨.

(<>안에 넣는게 아니라 <>까지 다 지우고 비번 입력해야됨)

 

그리고 다음과 같이 수정. 이렇게 변할 수 있는 부분만 따로 빼서 관리하면 코드 공유할 때나 다음 프로젝트 만들 때 더 편함

const db_id = '';     // id 입력
const db_pw = '';     // pw 입력
const db_cluster = 'cluster0';
const db_url = 'mongodb+srv://' + db_id + ':' + db_pw + '@' + db_cluster + '.7aje40r.mongodb.net/?retryWrites=true&w=majority';
let db;
MongoClient.connect(db_url, (error, client)=>{
    if (error) {
        return console.log(error);
    } 
    else {
        app.listen(8080, ()=>{
            global.db = client.db('node');    // node: 저장소 이름
            console.log('server on');
        })
    }
})

 

 

4. dotenv 설치

 

5. server.js에 dotenv 사용 선언

require('dotenv').config();

 

 

6. 프로젝트에 .env 파일 생성 후 아래 코드 작성

DB_ID = ""    // id 입력
DB_PW = ""    // pw 입력
DB_CLUSTER = "cluster0"
SERVER_PORT = 8080

 

7. server.js 코드 수정

const db_id = process.env.DB_ID;
const db_pw = process.env.DB_PW;
const db_cluster = process.env.DB_CLUSTER;
const server_port = process.env.SERVER_PORT;
const db_url = 'mongodb+srv://' + db_id + ':' + db_pw + '@' + db_cluster + '.7aje40r.mongodb.net/?retryWrites=true&w=majority';
let db;
MongoClient.connect(db_url, (error, client)=>{
    if (error) {
        return console.log(error);
    } 
    else {
        app.listen(server_port, ()=>{
            global.db = client.db('node');    // node: 저장소 이름
            console.log('server on');
        })
    }
})

 

 

8. cmd에서 서버 실행

근데 에러뜸

8080 포트가 다른 서버에서 사용중이라고 함. 8080 포트를 사용하는 프로세스를 찾아서 종료해야 함.

cmd에 netstat 명령어로 찾는 방법이 있는데 8080 포트를 사용하는 프로세스는 없었음..

이게 문제였음. 아까 삭제했어야 했는데 포트 연결을 한 번 더 실행하니 에러뜬거였음. 어쩐지 에러뜨기 전엔 server on이 두번 뜨더라.

다시 실행해보니 정상적으로 server on이 뜸. DB연결에 성공

728x90