[Node JS] #5.3 CRUD (1)
#1. Create
1. Form과 controller의 소통
- Method=”POST”일 때 데이터를 URL로 전송
- Form 태그에서는 action=””의 URL로 form의 정보를 전송
- 없을 경우, 페이지의 URL로 전송
- 라우터에서 URL에서 post 관리를 해주어야 받기 가능
Upload.pug
form(method="POST")
input(name="title", placeholder="Title", required, type="text")
input(name="description", placeholder="Description", required, type="text")
input(name="hashtags", placeholder="Hashtags, separated by comma.", required, type="text")
input(type="submit", value="Upload Video")
controller.js
export const postUpload = (req, res) => {
const { title, description, hashtags } = req.body;
console.log(title, description, hashtags);
return res.redirect("/");
};
2. Create Document
- Schema에 맞춰 form에서 받은 데이터를 이용하여 document 작성
- Id는 mongoose가 자동으로 부여
Controller.js
const video = new Video({
title,
description,
createdAt: Date.now(),
hashtags: hashtags.split(",").map(word => `#${word}`),
meta: {
views: 0,
rating: 0,
},
});
3. Save Document in Database
- Async, Await를 이용한 save() 함수 실행.
- Save 함수는 mongoose에서 제공
- Save 함수는 생성된 video 데이터를 return
- 객체를 생성 후 저장하는 방법과 바로 create함수를 실행하는 두 가지 방법으로 생성 가능
1. 객체 저장
await video.save();
2. Create 실행
await Video.create({
title,
description,
createdAt: Date.now(),
hashtags: hashtags.split(",").map((word) => `#${word}`),
meta: {
views: 0,
rating: 0,
},
});
4. Try, Catch
try {
const { title, description, hashtags } = req.body;
await Video.create({
title,
description,
createdAt: Date.now(),
hashtags: hashtags.split(",").map((word) => `#${word}`),
meta: {
views: 0,
rating: 0,
},
});
return res.redirect("/");
} catch (error) {
return res.render("upload", {
pageTitle: "Uplaod Video",
errorMessage: error._message,
});
}
#2. READ
1. Router
- Mongo DB에서 만든 id는 랜덤 문자열이기 때문에 정수만 받는 현재 라우터와 적합하지 않음
- 랜덤 문자열: 24 bytes hexadecimal
- Id를 regular expression으로 정규화:
[0-9a-f]{24}
2. Find
- Express에서 제공하는 request 객체를 통해 URL의 id를 가져온다.
- Id를 통해 DB의 video collection에서 해당 id의 객체를 가져온다.
- Implement
const { id } = req.params;
const video = await Video.findById(id);
Author And Source
이 문제에 관하여([Node JS] #5.3 CRUD (1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@choiish98/Node-JS-5.4-CRUD-1
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
[0-9a-f]{24}
const { id } = req.params;
const video = await Video.findById(id);
Author And Source
이 문제에 관하여([Node JS] #5.3 CRUD (1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@choiish98/Node-JS-5.4-CRUD-1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)