배씨의 개발일지

VScode로 mongoDB연결 본문

TIL

VScode로 mongoDB연결

용찬 2023. 6. 13. 22:05

문제

VScode로 mongoDB를 연결 후 데이터를 보내는 中 에러 발생

 

 

 

오류가 나기 전 과정

  1. mongoDB 설치 (https://www.mongodb.com/try/download/community)
  2. 환경 변수 추가
  3. CMD(명령 프롬프트)들어가서                                                                                                                                  mongod --install --serviceName MongoDB --serviceDisplayName MongoDB --dbpath C:\data\db --logpath C:\data\db\log\mongoservice.log --logappend 및 mongo 입력
  4. 명령어 입력 되지 않음
  5. 찾아보니 최신 버전은 vscode와 연동 시 mongosh가 필요하다는 걸 찾음
  6. mongosh 설치 후 다시 진행
  7. 또 똑같은 에러 발생
  8. 삭제 후 버전을 낮춰서 재설치
  9. Studio 3T 다운 (https://robomongo.org/download)
  10. VScode에서 mongoose 설치 (npm i mongoose)
  11. 코드내에서 mongoDB로 데이터 보내기 (=실패)

 

 

첫 번째 에러 코드

const mongoose = require("mongoose");

const connect = () => {
  mongoose
    .connect("mongodb://localhost:3000/spa_mall")
    .catch((err) => console.log(err));
};

mongoose.connection.on("error", (err) => {
  console.error("몽고디비 연결 에러", err);
});

module.exports = connect;

DB를 연결 후 데이터를 보내는 과정에서 Thunder client 확인하던 중 타임아웃 에러가 발생했다.

타임아웃 에러 발생

이 후 방법을 찾아보다가

 

https://mongoosejs.com/docs/connections.html

 

Mongoose v7.2.4: Connecting to MongoDB

You can connect to MongoDB with the mongoose.connect() method. mongoose.connect('mongodb://127.0.0.1:27017/myapp'); This is the minimum needed to connect the myapp database running locally on the default port (27017). If connecting fails on your machine, t

mongoosejs.com

몽구스 공식 문서에서 본 

mongoose.connect('mongodb://127.0.0.1:27017/myapp');

위 방법으로 mongoDB에 연결이 가능하다는 걸 알게되었고

 

const mongoose = require("mongoose");

const connect = () => {
  mongoose
    .connect("mongodb://127.0.0.1:27017/spa_mall")
    .then(() => {
      console.log("몽고디비 연결 성공");
    })
    .catch((err) => console.log(err));
};

mongoose.connection.on("error", (err) => {
  console.error("몽고디비 연결 에러", err);
});

module.exports = connect;

위와 같이 코드를 변경 + DB에 연결 확인을 위해 .then =>console.log 작성

 

몽고 DB에 정상적으로 연결 확인

Thunder Client를 이용, JSON형식으로 데이터 보내기.

 

Connection was forcibly closed by a peer 오류 발생

위에서 몽고DB로 연결해주는 주소를 변경해주고 그 주소 그대로 데이터를 보내니 데이터가 보내지지 않음.

 

 

Connection was forcibly closed by a peer.

기존 연결이 무언가 잘못되었음을 깨달았고

 

한 동기분에게 팁을 받아서

localhost:27017 => localhost:3000으로 입력

localhost:27017/~를 localhost:3000/~로 변경하니 제대로 데이터가 보내지는 걸 확인.

 

결론

DB연결을 해 줄때만 127.0.0.1:27017 ( mongoDB의 기본 포트)로 연결해주고

그 뒤에 내가 설정한 포트로 데이터를 보내주면 된다.

 

이 과정에서 내가 작성한 코드(이상한 데이터 값 입력, 오타)가 문제인가 싶어서 한참을 코드를 찾아봤는데

코드상의 문제는 없었고 도중에 404 NOT FOUND도 뜨길래 뭔가 HTML을 가져오는데 문제가 있구나 싶어서 찾아보았고

동기분에게 힌트를 받아서 결과적으로는 성공하게 되었다.

이 문제를 해결하는데 정말 많은 시간을 쏟아부었다....

다른 분들은 이런 에러를 안 만났으면 하는 바람 + 또 다시 이런 에러를 겪고 싶지 않은 마음에

이 글을 작성했다.

 

이 에러를 해결하기까지 도움을 주신 많은 분들께 감사인사를 드립니다...

감사합니다.

'TIL' 카테고리의 다른 글

MVC 패턴  (0) 2023.08.17
3 tier architecture  (0) 2023.07.24
오늘 알게 된 것 (Import, Export)  (0) 2023.05.31
TIL 4일 차  (0) 2023.05.19
TIL 3일 차  (0) 2023.05.19
Comments