• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

mongoDB 어플리케이션 연결이 안됩니다...

23.03.27 22:48 작성 조회수 199

0

```

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

const port = 5000;
const MongoURL =
  "mongodb+srv://username:비밀번호@cluster0.elhcowk.mongodb.net/express?retryWrites=true&w=majority";
var db, post;

app.use(express.static("public"));
app.use(express.urlencoded({ extended: false }));
app.set("view engine", "ejs");
//app.set("view engine", "pug");

app.get("/", (req, res) => {
  post.insertOne({
    제목: "test",
    내용: "test",
    날짜: new Date(),
  });
  res.render("index");
});

app.post("/calculator", (req, res) => {
  let result = Number(req.body.num1) + Number(req.body.num2);
  res.render("result", { result: result });
});
app.all("*", (req, res) => {
  res.status(404).send("찾을 수 없는 페이지입니다!");
});

MongoClient.connect(MongoURL, (err, database) => {
  if (err) {
    console.log(err);
    return;
  } else {
    app.listen(port, () => {
      console.log(`접속 완료됫어요 ${port}`);
    });
    db = database.db("express");
    post = db.collection("posts");
  }
});

 

```

강의 해주신대로 위 코드를 입력하고 nodemon을 실행하였음에도..
[nodemon] starting node index.js 라는 문구만 나올뿐.. db연동이 안됩니다 ㅠㅠ
혹시 제 코드에 문제가 있나요..?

url 부분에 username과 비밀번호는 제 몽고디비 아이디 비밀번호 입력했습니다..

혹시 코드부분에서 잘못된 점이 있나요..?

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.05.24

안녕하세요, 인프런 AI 인턴이에요.
에러 메시지를 확인해보니 MongoClient가 deprecated 되어서 connect를 사용 중인데, 아마 이에 따른 오류가 발생한 것으로 보입니다. MongoClient의 대체 기능으로 mongoose를 사용해보시는 것을 추천해드립니다.

mongoose를 사용하면 코드를 간단하게 수정할 수 있습니다. 아래는 mongoose를 이용하여 데이터베이스 연결하는 코드입니다.

const express = require("express");
const mongoose = require("mongoose");
const app = express();

const port = 5000;
const MongoURL =
  "mongodb+srv://username:비밀번호@cluster0.elhcowk.mongodb.net/express?retryWrites=true&w=majority";

onst postSchema = new mongoose.Schema({
  제목: String,
  내용: String,
  날짜: Date,
});

const Post = mongoose.model("Post", postSchema);

app.use(express.static("public"));
app.use(express.urlencoded({ extended: false }));
app.set("view engine", "ejs");

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

  const post = new Post({
    제목: "test",
    내용: "test",
    날짜: new Date(),
  });

  post.save(function (err, post) {
    if (err) return console.error(err);
    console.log(post);
  });

  res.render("index");
});

app.post("/calculator", (req, res) => {
  let result = Number(req.body.num1) + Number(req.body.num2);
  res.render("result", { result: result });
});

app.all("*", (req, res) => {
  res.status(404).send("찾을 수 없는 페이지입니다!");
});

mongoose.connect(MongoURL, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

const db = mongoose.connection;

db.on("error", (error) => console.error(error));
db.once("open", () => {
  app.listen(port, () => {
    console.log(`접속 완료됬어요 ${port}`);
  });
});

mongoose는 스키마(schema)와 모델(model)을 정의해주어야 합니다. 스키마는 데이터의 구조를 정의해주고, 모델은 스키마를 바탕으로 만든 데이터의 인터페이스입니다. 코드 내용을 약간 수정한 것으로, 그외 자세한 내용은 mongoose 공식문서를 참고하시길 바랍니다.