백엔드 오피스아워#2

아직·2022년 11월 4일
0
post-thumbnail

category(아우터/상의/하의) model/product(나이키 후드 3사이즈) model로 구분하고 product를 category에 대해서 populate해줬는데 괜찮나요?

문제 없지만 subdocument와 populate의 차이를 알면 더 잘 사용할 수 있을 것이다. populate는 reference로 사용될 뿐, 그 자체가 하나의 top-level document이고 subdocument는 일반적인 부모-자식 관계와 유사하다.

product model에서 name, brand, size 프로퍼티에 추가적으로 stock을 넣어주는 것이 좋은 방향일까요? 아니면 ObjectId 값을 갖는 데이터 하나, 하나를 상품이라고 본다면, 조회와 count해서 stock을 계산하는 것이 맞을까요?

후자도 가능하겠으나 그렇다면 비효율적이고 데이터 무결성이 깨진다고 볼 수 있다.

CRUD를 한 페이지에서 구현하고 토큰 여부에 따라서 일반 사용자는 R만 가능하도록 구현하려고 합니다.

문제는 없으나 일반 사용자용/관리자용 CRUD 페이지를 따로 만드는 것이 바람직해 보인다. 그리고 토큰과 인증 같은 경우는 미들웨어를 적극 활용하도록.

강의에서는 router 함수를 구현하면서 res.render 까지 넣어줬는데 현재 3계층 구조와 조금 다른 것 같습니다.

router 함수로 API 요청을 보낼텐데 res.render를 통해서 다른 URL 주소로 접근한다면, 하나의 경로가 다른 경로에 의존적이므로 RESTful해 보이지 않는다.

추가

pool을 구축하는 차원에서 enum을 사용한 것 같은데, enum 배열에 요소가 추가된다면 db에서 자체적으로 조회를 할 것이므로 리소스를 잡아먹게 된다. enum은 날짜와 같이 바꾸지 않을 속성을 활용하는 게 더 맞는 것 같다.

router에서 async 이하에 정의된 controller(request hanlder?)도 사실 분리해서 router-controller-businiess logic->db 구조를 만들면 좋다.

왜 많은 보안 라이브러리 중에 bcrypt를 사용할까? 이는 다른 기능의 라이브러리를 사용할 때도 마찬가지로 던져야 할 질문이다.

var, let은 지양하고 깃헙에 코드를 올릴 때 console.log()는 지워주는 것이 좋다.

0개의 댓글