db는 mongodb를 연결해볼것이다.
이미 나는 mongodb atlas 계정이 만들어져 있어서, cluster 생성부터 연동하는것까지 정리해보았다.
- create 버튼 클릭
여기 create 버튼을 클릭하면, 다음과 같은 화면이 나타난다.
- shared 선택
'Shared'이 무료 이용이 가능하다. 단, 프로젝트당 하나로 무료로 생성할 수 있는 클러스트 수가 제한되어있다.
- 지역 선택
내 위치는 한국이므로 Seoul로 체크해준다. 이때 위치를 잘못 체크하면 나중에 클러스터 연결할 때 오류가 생길 수 있기 때문에, 제대로 체크해줘야한다.
- cluster name 설정
cluster 이름은 본인이 원하는 것으로 설정하면 된다. 나는 프로젝트 이름과 일치 시키기 위해 'node-react'로 설정하였다.
- username과 password 설정
여기서 username과 password 설정할때, 설정한 걸 꼭 기억해줘야한다. 나중에 password 부분을 입력해줘야하기 때문이다. 나는 그냥 자동 secure password로 생성해주었다.
💡기억하기 어렵다면 복사해두기 !
- connect 버튼 클릭
만들어진 cluster의 connect 버튼을 클릭한다.
- Drivers 클릭
누르면 여러가지 뜨는데 우리는 Drivers
누르면 된다.
여기 4번째에 MongoDB for VS code
는 vscode에 mongoDB 확장자를 설치한 경우 써먹는 케이스이다.
- 코드 붙이기
'npm install mongodb'라고 적힌 부분은 무시하고, 그 아래 코드를 복사하면 된다. 이때 password
라고 되어있는 부분에는 우리가 아까 설정할때 입력한 password
를 입력하면 된다.
(💡 근데 이 방법 오류났어서 오류 해결하는 방법은 아래에 입력해두었다 - 오른쪽 목차에서 '연동 오류 해결'부분 확인하면 된다.)
- mongoose 모듈 설치
npm install mongoose
코드를 붙이기 전, mongoose
를 설치해준다. mongoose
는 mongoDB
와 express
프레임워크 간의 연결을 생성하는 Javascript 객체지향 프로그래밍 라이브러리이다.
- index.js
이제 코드를 붙이면 이렇게 된다. <password>
부분엔 위에서 말했듯이 이 부분<>
삭제하고 본인이 설정한 password를 입력하면 된다.
const express = require('express')
const app = express()
const port = 3000
const mongoose = require('mongoose')
const url = 'mongodb+srv://ming:<password>@node-react.10bqcpc.mongodb.net/?retryWrites=true&w=majority'
mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => {
console.log('MongoDB에 연결되었습니다.');
// 여기에 추가적인 작업이나 애플리케이션 실행 코드를 작성할 수 있음
})
.catch((error) => {
console.error('MongoDB 연결에 실패했습니다.', error);
});
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
- 서버 on
npm run serve
를 입력하여 서버를 켜주면?
흠 이런 오류가 발생한다😶 오류를 해결 해보자.
해결 방법은 의외로 찾기 굉장히 쉬웠는데, 아래의 글을 참고하면 될것같다.
stackoverflow- 'Error:querySrv EREFUSED'
요약하자면 Node.js의 버전을 낮추라는 것이다.
그럼 다시 mongodb atlas에 접속해보자.
아까 이렇게 되어있던 부분에서 Node.js의 버전을 2.2.12
로 설정해준다. 그럼 아래의 코드가 바껴있을 것이다. 이를 복사해 index.js를 수정해준다.
//index.js에서 url값 변경
const url = 'mongodb://ming:<password>@ac-tnjmlt2-shard-00-00.10bqcpc.mongodb.net:27017,ac-tnjmlt2-shard-00-01.10bqcpc.mongodb.net:27017,ac-tnjmlt2-shard-00-02.10bqcpc.mongodb.net:27017/?ssl=true&replicaSet=atlas-iuuepm-shard-0&authSource=admin&retryWrites=true&w=majority'
서버 키면 아래와 같이 연결에 성공했다고 뜬다. 얏호 !