2. insertOne() 은 항상 promise를 생성한다!
MVC 모델에서 class User { constructor(email,password,name,street,postal,country){ ... async getUserWithSameEmail(){ return db.getDb().collection("userInfo").findOne({email:this.email}) } 를 보고자한다. 비동기함수인 async getUserWithSameEmail() 은 프로미스를 통해, 값을 반환할 수 있다. 그래서 대부분 함수의 실행 코드 앞에 await 를 붙여, 값을 반환하는데 여기서 중요한 점은 , 데이터베이스에 접근하는 findOne은 항상 프로미스를 반환한다. 즉, await를 쓰지않고, (앞으로 더 쓸 코드가 없다면) retrun을 하여, 그대로 함수자..
2022. 9. 20.
1. 구상하기, 세팅하기, 기본 가입페이지만들어보기
나만의 작은 쇼핑몰을 만들어보자. 하핫. 물론 로컬이다 하핫. [ 구상 ] 0. 공통 : 로그인, 회원가입, 로그아웃 ... 1. 사용자 : 상품보기, 상품 정보보기, 카트담기, 결제하기, 완료페이지 ... 2. 관리자 : 상품 등록, 상품 정보 등록, 모든 사용자 결제완료페이지 보기 ... MVC 패턴을 기반으로 하여 시작해보았다! [ 서버 생성, 데이터베이스연결, 필요한 패키지 연결] 1. 서버를 열고, mongoDB기반의 데이터베이스를 연결하고, ejs view engine을 설치하여, VIEW를 깔고가자 npm init 을 통해, 패키지 설치 기반을 다지는 것을 잊지 말자! 컨트롤러에는 route들의 필요한 function db 에는 db middleware 에는사용자 지정 middleware가 ..
2022. 9. 19.
[res.locals.csrfToken] 난관에 봉착했다. csrf 토큰이 한쪽 controller에만 먹는다
MVC 패턴 리팩토링중... VIEW는 이미 리팩토링 하며 하고있었고, MODEL과 CONTROLLER는 완성시켜, 마무리단계로 CONFIG들을 조금씩 처리중에 있었다. 그런데 무한정 생성해놓은 오류페이지로 넘어가기 시작했다. 물론, VSCODE의 오류는 없이. 그렇다면, 모든 오류를 캡쳐하기 위해, 생성해놓은 오류페이지로 렌더된다는 것인데, 최근에 바꾼것이라곤, res.locals.csrfToken 으로, 라우트에서 따로 토큰을 부여하지않고, app.js 에서 모든 페이지에 한번에 적용하기 위한, 방책이었다. 그런데, 만들어 놓은 controller 2개 중, 한쪽의 controller에만 이게 적용되고 나머지 하나는, render할때마다 csrf 토큰 에러가 발생한다. 결론부터 말하자면, 이유는 모르..
2022. 9. 17.