Node.js

Node.js Crash Course Tutorial #9 - MongoDB

유호야 2023. 10. 2. 03:42
반응형

const express = require("express");
const morgan = require("morgan");
const mongoose = require("mongoose");
const Blog = require("./models/blog");

// express app
const app = express();

// connect to Mongo DB
const dbURI =
  "mongodb+srv://아이디:비밀번호@cluster0.xia0t5s.mongodb.net/";
mongoose
  .connect(dbURI)
  .then((result) => {
    //listen for request
    app.listen(3000);
    console.log("connected to db");
  })
  .catch((err) => console.log(err));

// register view engine
app.set("view engine", "ejs");

// middleware & static files
app.use(express.static("public"));
app.use(morgan("dev"));

// mongoose and mongo sandbox routes
app.get("/add-blog", (req, res) => {
  const blog = new Blog({
    title: "new blog 2",
    snippet: "about my new blog",
    body: "more about my blog",
  });

  blog
    .save()
    .then((result) => {
      res.send(result);
    })
    .catch((err) => console.log(err));
});

app.get("/all-blogs", (req, res) => {
  Blog.find()
    .then((result) => {
      res.send(result);
    })
    .catch((err) => {
      console.log(err);
    });
});

app.get("/single-blog", (req, res) => {
  Blog.findById("6519b987fcc4c5ea91ec2d73")
    .then((result) => {
      res.send(result);
    })
    .catch((err) => {
      console.log(err);
    });
});

app.get("/", (req, res) => {
  const blogs = [
    { title: "Yoshi finds eggs", snippet: "Lorem ipsum" },
    { title: "Mario finds eggs", snippet: "Lorem ipsum" },
    { title: "How to defeat browser", snippet: "Lorem ipsum" },
  ];
  res.render("index", { title: "Home", blogs: blogs });

  //   res.send("<h2>Home Page</h2>");
  // res.sendFile("./views/index.html", { root: __dirname });
  //write과 다르게 자동적으로 텍스트 타입을 정해준다.
});

app.get("/about", (req, res) => {
  res.render("about", { title: "About" });
});

app.get("/blogs/create", (req, res) => {
  res.render("create", { title: "Create a new blog" });
});

// 가장 아래에 작성해야 한다
app.use((req, res) => {
  res.status(404).render("404", { title: "404" });
  // res.status(404).sendFile("./views/404.html", { root: __dirname });
});

// app.get("/about", (req, res) => {
// res.render("about", { title: "About" });
// res.send("<h2>About Page</h2>");
// res.sendFile("./views/about.html", { root: __dirname });
// });

 

 

blogs.js

const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const blogSchema = new Schema(
  {
    title: {
      type: String,
      required: true,
    },
    snippet: {
      type: String,
      required: true,
    },
    body: {
      type: String,
      required: true,
    },
  },
  {
    timestamps: true,
  }
);

const Blog = mongoose.model("Blog", blogSchema);
module.exports = Blog;

 

 

https://cloud.mongodb.com/

 

MongoDB Cloud

MongoDB Cloud is a unified data platform for modern applications and includes a global cloud database, search, data lake, mobile, and application services.

www.mongodb.com

 

mongoose를 사용할 것이다

 

 

app.js

const express = require("express");
const morgan = require("morgan");
const mongoose = require("mongoose");
const Blog = require("./models/blog");

// express app
const app = express();

// connect to Mongo DB
const dbURI =
  "mongodb+srv://ID:PASSWORD@cluster0.xia0t5s.mongodb.net/";
mongoose
  .connect(dbURI)
  .then((result) => {
    //listen for request
    app.listen(3000);
    console.log("connected to db");
  })
  .catch((err) => console.log(err));

// register view engine
app.set("view engine", "ejs");

// middleware & static files
app.use(express.static("public"));
app.use(morgan("dev"));

// mongoose and mongo sandbox routes
app.get("/add-blog", (req, res) => {
  const blog = new Blog({
    title: "new blog 2",
    snippet: "about my new blog",
    body: "more about my blog",
  });

  blog
    .save()
    .then((result) => {
      res.send(result);
    })
    .catch((err) => console.log(err));
});

app.get("/all-blogs", (req, res) => {
  Blog.find()
    .then((result) => {
      res.send(result);
    })
    .catch((err) => {
      console.log(err);
    });
});

app.get("/single-blog", (req, res) => {
  Blog.findById("6519b987fcc4c5ea91ec2d73")
    .then((result) => {
      res.send(result);
    })
    .catch((err) => {
      console.log(err);
    });
});

// routes
app.get("/", (req, res) => {
  res.redirect("/blogs");

  // const blogs = [
  //   { title: "Yoshi finds eggs", snippet: "Lorem ipsum" },
  //   { title: "Mario finds eggs", snippet: "Lorem ipsum" },
  //   { title: "How to defeat browser", snippet: "Lorem ipsum" },
  // ];
  // res.render("index", { title: "Home", blogs: blog });
  //   res.send("<h2>Home Page</h2>");
  // res.sendFile("./views/index.html", { root: __dirname });
  //write과 다르게 자동적으로 텍스트 타입을 정해준다.
});

app.get("/about", (req, res) => {
  res.render("about", { title: "About" });
});

// blog routes
app.get("/blogs", (req, res) => {
  Blog.find()
    .sort({ createdAt: -1 })
    .then((result) => {
      res.render("index", { title: "All Blogs", blogs: result });
    })
    .catch((err) => consol.elog(err));
});

app.get("/blogs/create", (req, res) => {
  res.render("create", { title: "Create a new blog" });
});

// 가장 아래에 작성해야 한다
app.use((req, res) => {
  res.status(404).render("404", { title: "404" });
  // res.status(404).sendFile("./views/404.html", { root: __dirname });
});

// app.get("/about", (req, res) => {
// res.render("about", { title: "About" });
// res.send("<h2>About Page</h2>");
// res.sendFile("./views/about.html", { root: __dirname });
// });
반응형