[Node.js/React] MongoDB 연결 / querySrv ENODATA 오류 해결

·2023년 6월 10일
0

node-react 기초 공부

목록 보기
2/12
post-thumbnail

db는 mongodb를 연결해볼것이다.
이미 나는 mongodb atlas 계정이 만들어져 있어서, cluster 생성부터 연동하는것까지 정리해보았다.

✏️ cluster 생성

  1. create 버튼 클릭

여기 create 버튼을 클릭하면, 다음과 같은 화면이 나타난다.


  1. shared 선택

'Shared'이 무료 이용이 가능하다. 단, 프로젝트당 하나로 무료로 생성할 수 있는 클러스트 수가 제한되어있다.


  1. 지역 선택

내 위치는 한국이므로 Seoul로 체크해준다. 이때 위치를 잘못 체크하면 나중에 클러스터 연결할 때 오류가 생길 수 있기 때문에, 제대로 체크해줘야한다.


  1. cluster name 설정

cluster 이름은 본인이 원하는 것으로 설정하면 된다. 나는 프로젝트 이름과 일치 시키기 위해 'node-react'로 설정하였다.


  1. username과 password 설정

여기서 username과 password 설정할때, 설정한 걸 꼭 기억해줘야한다. 나중에 password 부분을 입력해줘야하기 때문이다. 나는 그냥 자동 secure password로 생성해주었다.
💡기억하기 어렵다면 복사해두기 !


✏️cluster 연동

  1. connect 버튼 클릭

만들어진 cluster의 connect 버튼을 클릭한다.


  1. Drivers 클릭

누르면 여러가지 뜨는데 우리는 Drivers 누르면 된다.
여기 4번째에 MongoDB for VS code는 vscode에 mongoDB 확장자를 설치한 경우 써먹는 케이스이다.


  1. 코드 붙이기

'npm install mongodb'라고 적힌 부분은 무시하고, 그 아래 코드를 복사하면 된다. 이때 password라고 되어있는 부분에는 우리가 아까 설정할때 입력한 password를 입력하면 된다.
(💡 근데 이 방법 오류났어서 오류 해결하는 방법은 아래에 입력해두었다 - 오른쪽 목차에서 '연동 오류 해결'부분 확인하면 된다.)


  1. mongoose 모듈 설치
npm install mongoose

코드를 붙이기 전, mongoose를 설치해준다. mongoosemongoDBexpress프레임워크 간의 연결을 생성하는 Javascript 객체지향 프로그래밍 라이브러리이다.


  1. 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}!`))

  1. 서버 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'

서버 키면 아래와 같이 연결에 성공했다고 뜬다. 얏호 !


👩‍💻 깃허브 주소

node-react

0개의 댓글