해당 내용은 제가 node.js를 이용한 프로젝트를 가지고 면접 준비를 할 때 정리했던 내용들 입니다.
mongoose function 사용하는 두가지 방법
1) callback function 활용
2) promise 활용
: 무언가가 발생하고 난 다음 호출되는 function
: db오기 전에 rend 되는 걸 막기 위해 함수 안으로 넣어줌. but, 안예쁨. → promise를 쓰는 이유
: 장점 - error를 바로 볼 수 있음
: callback 의 최신버전
: async / await
: function 앞에 async, promise 객체 앞에 await
: async 가 붙은 함수는 promise 객체를 반환함, await은 promise가 완료될 때 까지 기다림, promiser가 resolve 한 값을 내놓음
: await 은 비동기 function 안에서만 작동 가능
: async의 예외처리
ex) export const home = async(req, res) ⇒ {
const videos = await Video.find({});
return res.render(”home”, {pageTitle:”Home”, videos})
: map() 매서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환함.
: promise를 return 함
: javascript에만 존재하는 데이터를 db에 저장하는데 시간이 걸림. = 기다려줘야함
→ async / await으로 기다려주기
1) .save() : object - new - save() 필요
2) .create() : object만 필요
: music.id 표현할 때 사용함
:mongoose의 id 패턴 = 0-9, a-f 까지의 24자리 string
: 해당 data가 있는지 검색. db 전체를 가져오지 않아도 돼 유용. (boolean 값 → 뒤에 findByIdAndUpdate())
: but, getEdit 의 역웅 실제 video objectf를 edit 템플릿에 보내줘야 하므로 findById(id) 사용
: 데이터를 저장 or 업데이트 하기 전/후에 무언가 처리를 해야할 때 사용
: mongoDB에서 정규 표현식을 사용하기 위해 쓰는 키워드 (not mongoose)
: method, route 등을 나타내기 위해 만들었던 middleware들의 기능을 가지고 있음
: 기존 js - html - css 로 작업시, request 를 통해 각종 변수를 전달하지 못하기 때문에 미리 정해둔 페이지만 써야함. pug 의 경우 header, footer 등을 따로 partial 하게 만들어 관리하고 모든 파일에 첨부 가능함.
: 데이터를 받을 수 있는 partial
ex) 같은 형태를 가지지만 서로 다른 데이터를 가진 patial 만들 때
: document-based
(sql-based가 아님. json처럼 저장 가능)
: node.js 와 mongoDB의 다리 역할
: 백엔드와 브라우저 간에 어떤 활동을 했는지 기억하는 것.
1) 브라우저가 서버에 접근
2) 서버가 브라우저에 cookie 줌
3) 브리우저가 서버에 다시 접글할 때 2에서 받은 cookie 같이 건넴
4) 서버는 cookie를 통해 브라우저 구분
: session id 는 쿠키에 저장하지만, 데이터 자체는 서버에 저장됨
→ session store 사용해 세션을 db에 저장해야함
→ 세션이 종료되어도 db에 저장되어있기 때문에, 재로그인 했을 때 기억할 수 있음.