데이터베이스는 MongoDB를 사용하기로 했다.
아무래도 채팅 로그를 가지고 있으려면 확장성이 좋아야 한다고 생각하는데, 이러한 부분에서 NoSQL 쪽이 더 효율적이라고 판단해 MongoDB를 채택!
데이터를 클라우드에 올려놓고 사용할 수 있는 MongoDB Atlas를 사용하기로 했다.
https://www.mongodb.com/ko-kr/atlas
MongoDB Atlas | 멀티 클라우드 개발자 플랫폼
MongoDB Atlas는 유일한 멀티 클라우드 개발자 데이터 플랫폼으로, 데이터를 사용해 빠르고 손쉽게 구축할 수 있습니다. 지금 무료로 시작하세요!
www.mongodb.com
계정을 대충 만들고 클러스터를 만들자.
일확천금을 꿈꾸며 공짜 클러스터인 M0을 선택!
그럼 이렇게 클러스터를 생성해주고 이름과 비밀번호를 준다.
나중에 DB 접속할 때 사용되므로 꼭! 기억해두자.
대충 설정을 마치면 이렇게 Overview 페이지로 이동한다.
이제 연결을 시작해보자!
우선, 데이터를 쉽게 볼 수 있는 MongoDB Compass를 사용할거고, Node 환경에서 MongoDB를 더 효율적으로 사용할 수 있게 해주는 mongoose 라이브러리를 사용할거다.
MongoDB Compass는 홈페이지에서 받을 수 있고, mongoose는 'npm install mongoose'로 설치할 수 있다.
Connect를 누르면 위와 같은 창이 뜬다.
Drivers는 나의 Node 프로젝트에 연결하는 것이고, Compass는 말 그대로 콤파스에 연결.
먼저 Compass부터 연결해보자.
난 Compass 이미 설치했으니까, 오른쪽을 골라주면 연결주소를 준다. 요놈을 복사해서..
Compass에 들어가 URI 부분에 방금 복사한 녀석을 붙히고, <password> 부분에 아까 저장해둔 비밀번호를 넣은 뒤 연결한다.
그리고 대충 프로젝트 DB를 만들어보자.
이제 Node 프로젝트와 연결을 해보자.
이번에도 연결 주소를 복사한 뒤 ...
DB관련한 환경변수들을 관리할 config.env 파일에 이렇게 저장하자.
DATABASE_USERNAME=sysh9498
DATABASE_PASSWORD=***************
DATABASE=mongodb+srv://sysh9498:<PASSWORD>@cluster0.agzmoqr.mongodb.net/DayDream?retryWrites=true&w=majority
이런 DB 관련한 정보(비밀번호, 연결주소) 등은 사용자들이 볼 수 없게, git에도 올라가지 않게 환경변수로 관리하는 것이 좋다.
그리고 DATABASE 주소를 넣을 때, ? 앞에 내가 사용할 데이터베이스의 이름을 넣어줘야 한다.
나는 앞에서 DayDream으로 설정했으니 이 이름을 넣어줬다.
그리고 mongoose가 설치되어 있다는 가정 하에,
Index.js 에
const DB = process.env.DATABASE.replace(
"<PASSWORD>",
process.env.DATABASE_PASSWORD,
);
mongoose
.connect(DB, {
useNewUrlParser: true,
useCreateIndex: true,
useFindAndModify: false,
useUnifiedTopology: true,
})
.then((con) => {
console.log("DB connection successful!");
});
DB 연결을 해주자. 비밀번호도 직접 코드에 넣으면 안좋기 때문에, <PASSWORD> 값을 환경변수 내에 있는 DATABASE_PASSWORD값으로 치환해줬다. 훨씬 안전하겠죠?
드디어 연결이 완료됐다 !
사실 연결이 안되서 여기저기 찾아봤는데 , DNS 관련한 문제였던 것 같다.
나도 계속 안돼서(잘못한게 없는 것 같은데,,) 여기저기 찾아보며 시간을 버렸는데, 결국 해결한 방법은
컴퓨터의 DNS를 구글DNS인 8.8.8.8로 변경하는 방법이였다. 정확한 이유는 잘 모르겠다 -
아무튼 연결 끝 ! 다음엔 유저 모델을 설정하는 것 부터 시작해보자.
'DayDream Project > BackEnd' 카테고리의 다른 글
[Node.js] 유저 회원가입/로그인 구현하기 With Mongoose - 2 (1) | 2024.02.17 |
---|---|
[Node.js] 유저 회원가입/로그인 구현하기 With Mongoose - 1 (0) | 2024.02.17 |