[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.)