반응형
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;
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 });
// });
반응형
'Node.js' 카테고리의 다른 글
Node.js Crash Course Tutorial #11 - Express Router & MVC (2) | 2023.10.03 |
---|---|
Node.js Crash Course Tutorial #10 - Get, Post & Delete Requests (0) | 2023.10.03 |
Node.js Crash Course Tutorial #8 - Middleware (0) | 2023.09.30 |
Node.js Crash Course Tutorial #7 - View Engines (0) | 2023.09.30 |
[NetNinja: Nodejs 강의] 6강 Express (0) | 2023.09.29 |