인프런 커뮤니티 질문&답변

allisha0508님의 프로필 이미지

작성한 질문수

Express 튜토리얼 : 웹 서비스를 위한 핵심 API

(3강 1강의) mongoDB 연결 및 데이터베이스 생성이 안 돼요

24.10.06 22:04 작성

·

18

0

몽고디비에 회원가입하고, 이제 js코드를 작성해(vscode에서) 몽고디비에서 데이터베이스 및 컬렉션을 생성시키는 과정을 따라가고 있었습니다.

 

강의 내용과 동일한 구조를 가지고 있고, 코드 작성은 똑같이 index.js에서 진행했습니다.

(또 패키지를 확인해본 결과 몽고디비는 잘 설치되어 있었구요)


const express = require("express");

const MongoClient = require("mongodb").MongoClient;

const app = express();

const port = 5000;

const MongoURL=

"mongodb+srv://아이디:비밀번호@chaehyun.f26fr.mongodb.net/Express?retryWrites=true&w=majority&appName=Chaehyun";

var db, post;

app.use(express.static("public"))

app.use(express.urlencoded({extended: false}))

//app.set( 'view engine' , 'pug' )

app.set('view engine' , 'ejs' )

app.get("/", (req, res) => {

  post.insertOne({

    제목 : "test",

    내용 : "test",

    날짜 : new Date(),

  })

  res.render("index")

});

 

app.post('/calculator', function(req,res){

  let result = Number(req.body.num1) + Number(req.body.num2);

  res.render("result", {result:result})

})

 

app.all("*", function(req,res){

  res.status(404).send("찾을 수 없는 페이지")

})

MongoClient.connect(MongoURL, (err, database) => {

  if(err){

    console.log(err);

    return;

  } else{

    app.listen(port, () => {

      console.log(`Example app listening on port ${port}`);

    });

    db = database.db("Express");

    post = db.collection("posts")

  }

})

이처럼 입력하였는데

몽고디비에선 데이터베이스와 컬렉션이 생성되지 않습니다...


그런데 수업에선 localhost:5000을 통해 -> 몽고디비의 데이터베이스 생성을 하시는 듯 해 보였습니다만, 애초에 app.get( )에서의 내용 때문에 웹사이트는 작동되지 않는게 맞지 않나요...?

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2024. 10. 06. 22:06

안녕하세요, 인프런 AI 인턴입니다. allisha0508님.

여러 가지 이유로 MongoDB 연결 및 데이터 삽입이 실패할 수 있습니다. 주로 고려해야 할 몇 가지 사항을 알려드립니다.

  1. MongoDB URL 확인:
    MongoDB 클러스터 URL에서 “아이디”와 “비밀번호”는 정확해야 하며, 해당 사용자가 해당 데이터베이스에 접근 권한이 있는지 확인하십시오. 클러스터에 접근하려면 IP 화이트리스트 및 네트워크 설정도 확인해야 합니다.

  2. 콜백 구조 확인:
    MongoClient.connect 메서드가 비동기적으로 동작하기 때문에 데이터베이스 연결이 성공적으로 이루어진 다음에만 데이터 삽입이 가능하다는 점을 명심하세요.

  3. 데이터베이스 및 컬렉션 생성 방법:
    실제로는 데이터를 삽입할 때 MongoDB는 데이터베이스와 컬렉션을 자동으로 생성합니다. 하지만 코드 내에서 res.render("index") 호출을 데이터 삽입과 함께 진행해야만 웹 페이지가 제대로 동작합니다.

  4. 에러 메시지 확인:
    MongoDB 연결이나 데이터 삽입 시 발생하는 에러 메시지를 꼭 확인하십시오. 에러 메시지는 문제의 원인을 식별하는 데 큰 도움이 됩니다. 예를 들면, 인증 오류가 발생하면 이는 자격 증명 문제일 수 있습니다.

  5. 포트 또는 네트워크 이슈:
    네트워크가 MongoDB와 올바르게 연결될 수 있도록 방화벽이나 네트워크 설정을 점검하십시오.

다음은 관련 질문에서 도움을 받을 수 있는 URL입니다:
- “몽구스 모델 강의에서 에러가 발생했습니다”
- “axios 강의부분 부터 문제가 잇습니다”

이 URL에서 다른 사용자의 유사한 문제와 강사의 답변을 확인할 수 있습니다. 종류별로 다양한 해결책이 제시되어 있으니 참고해 보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.