📌 2020 07 24 전체 상품 중에서 특정 키워드가 title에 들어간 상품 검색 기능 구현 몽고 db에서는 searching 기능을 제공해주는데, 먼저 검색의 대상이 되고자 하는 컬렉션 필드를 text index로 등록해줘야 한다. 아래와 같이 등록해주면 된다. Schema.index({필드명: 'text'}); const mongoose =require('mongoose'); const Schema = mongoose.Schema; const ProductSchema = new Schema({ title:{ type:String, required:true }, price:{ type:Number, required:true }, imageUrl:{ type:String, required:true }..
📌 2020 07 22 Cart와 Order에서 수량 조절 기능을 구현 이제까지는 수량조절하려면 수동으로 해당 Product를 다시 add to cart 혹은 order해야 했는데 이를 개선함 Cart에서 check한 Product만 Order로 넘어가도록 수정함 이제까지는 Cart에 있는 모든 Product를 Order로 넘길 수 밖에 없었는데 이를 개선함 Cart / Order 수량조절 수량 조절 버튼에 onClick 이벤트가 발생하면 해당 product의 수량을 변경하는 라우팅으로 fetch시키는 자바스크립트 함수가 실행되도록 한다. 여기서 get 방식으로 전송하므로 product Id와 변경될 수량 (qty) 는 각각 파라미터와 쿼리에 담아서 전달해준다. 전달받은 데이터를 통해 user 모델의 c..
📌 2020 07 21 Seller 등록을 구현하여 Seller로 등록된 유저에게만 Admin Product와 add Product 항목이 보이도록 수정함 Amazon 웹에서 착안한 아이디어 ! Seller 등록 및 취소 flow login이 되었을 때만 가능하다. Seller가 되기 위해서는 Seller name을 입력하도록 한다. 입력한 Seller name은 해당 User 데이터베이스에 저장된다 Seller인 회원에게는 Seller를 취소할 것인가에 대한 항목을 보여준다. 취소하기위해서는 비밀번호로 인증해야한다. Seller를 취소하면 그동안 post 했던 모든 Product가 사라진다. isLoggedIn과 함께 isSeller도 req.locals에 저장해준다. app.use((req,res,n..
📌2020 07 19 log in, sign up, add product, edit product에 input data에 대한 validation을 추가했음 express validator third party package 사용 500 error page 구현 데이터베이스 문제 혹은 permission 문제에 대해 stuck 되지 않고 500 error 페이지로 보내줌 ✨ Login Validation 원래는 user databse를 탐색하여 user id 일치여부, password 일치 여부를 확인해주는 custom validation도 라우터에서 함께 구현하였으나 , 어차피 컨트롤러에서 로그인된 user 를 session에 저장하는 과정에서 Userdatabse. findOne('user') 연산이..