일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- backend
- MongoDB
- ES6
- DART
- graphQL
- NextJs
- form
- TypeScript
- 자바스크립트
- javscript
- Flutter
- Session
- Component
- heroku
- API
- pug
- CSS
- JavaScript
- nodejs
- react
- GRID
- node.js
- HTML
- 리액트
- ECMAScript
- CLONE
- Mongoose
- clonecoding
- frontend
- express
- Today
- Total
목록express (43)
Enjoy Programming
몽고db를 사용을 위해 mongoose를 사용하던 중 업로드한 파일을 수정시 파일이 있는지 여부를 체크할때 기존 findById로 video객체를 전부 불러와 있는지 확인했다. 그런데~ 더 간단? 하게 확인 할 수 있는 방법이 있는데 바로 Model.exists()를 사용하면 된다. exists() function은 Promise를 return하는데 데이터베이스에 해당 필터와 일치하는 문서가 하나 이상이 있으면 true를 반환하고 아니라면 false를 반환한다. 여기서 filter는 object이다. callback함수도 필요하다고 doc에는 나와있으나 async await을 이용해 콜백없이 사용해본다. 기존 해당 비디오가 있는지 판단후 없다면 오류메세지를 반환하는 코드이다. exists를 사용해서 동일..
음.. 오랜만에 챌린지 기록을 해본다 그동안 계속 챌린지는 진행중이긴 한데 ~ 다른거 포스팅하고 공부하느라 이것 까진 못하겠다 싶었는데 오늘부터는 간단하게라도 기록해야겠다. 일단 오늘의 challenge내용은 영화정보가 담긴 fakeDB를 이용해서 간단한 웹을 제작하는 내용이다. 조건이 세가지 있는데 먼저 기본적으로 정의된 세가지 컨트롤러가 있는데 1. home should list all the movies 2. movieDetail should show a movie based on the :id 3. filterMovie should filter for a movies based on the rating or the year.~! 홈 컨트롤러는 모든 영화리스트를 보여줘야하고, 영화디테일 컨트롤러는 ..
코멘트 작업을 해주는데 프론트 엔드 작업을 하기전에 백엔드 부터 해본다. root를 설정해주러 routes.js에서 api part에 url 설정을 해주고 videoController에서 postAddComment컨트롤러를 만들고 (videoDeail컨트롤러에서 populate를 이용해 creator와 comments를 가져온다) video, user를 이용해 comment를 만들고 넣어준다. 그리고 apiRouter에서 post방식으로 라우터 하나 만들어준다. 이제 템플릿에가서 코멘트 폼을 만들고 코멘트 리스트를 만들자. 그리고 이번에는 ajax를 통해 서버로 코멘트 정보를 보내고 받아오겠다. 프론트에서 작동할 addComment.js하나 만들고 submit 이벤트 핸들러를 하나만들어서 submit 이..
앞서 만든 video edit은 로그인한 유저와 비디오 작성자 정보가 다르면 수정이 안되는 거였지만 문제는 routes활용해 url 마지막에 /edit을 써주면 수정페이지로 이동하게 된다. 이를 수정해보자~ get edit컨트롤러에서 video 객체를 받아와 조건문을 달아주자 video를 작성한 사람이 현재 로그인한 유저가 아니면 에럴를 발생시키고 아니면 수정페이지를 띄우게 한다. 한가지 주의 할 점은 video.creator는 타입이 object타입이고 req.user.id는 string 타입이다. 둘의 타입을 같게 해줘야 조건문이 성립하기에 video.creator를 toString()을 이용해 변환해주자. 그럼 성공적이다~!~! 이와 같이 delete 컨트롤러도 수정해주자 몇가지 수정을 더 해야하지..
이제 할 일은 업로드된 비디오에 작성자를 연결해주고 작성자가 로그인 되었다면 edit을 할수 있게한다 그리고 다른 유저라면 그냥 수정할 수 없게 하겠다 먼저 각 모델에 스키마를 추가한다. 비디오에는 유저의 정보를 그리고 유저에는 비디오와 코멘트 정보, 코멘트에는 유저의 정보를 넣어주자 그리고 비디오 컨트롤러에서 post업로드 컨트롤러를 수정해주자 새로 만들어진 비디오의 스키마 creator를 req.user.id를 추가해주고 (유저가 로그인 되어있다면 항상 req에는 user가 있다) videos에 neVideo.id를 넣어준다. 그리고 저장. 그리고 상세정보 컨트롤러를 살짝 수정해준다. populate함수를 통해 객체를 가져오도록 하는데 이 함수는 Object ID타입에만 쓸수있다 마지막으로 video..
이제 비밀번호 변경을 다룰건데 전에 사용했던 passport-local-mongoose를 이용한다 잠시 passport-local-mongoose를 다시 되짚어보면 passport-local-mongoose 는 username과 password를 사용한 login을 passport와 함께 간단히 빌드할 수 있는 플러그인 이다. node.js 에 나온 다큐먼트를 인용해보자 그냥 passport-local-mongoose를 이용하면 암호 모듈을 사용하여 암호를 해시할 필요없이 이 모듈이 다 알아서 해준다고 한다. DB에서 salt및 hash필드를 자동으로 생성한다. hash에 대한 개념은 살짝 잡혀있는데 salt가 무엇인가... 예를 들어 데이터베이스에 두명의 사용자가 동일한 암홀르 가진 경우 동일한 해시가..