
내 블로그에 가장 많은 유입검색어, 조회수가 바로 json이다. 그만큼 JSON이 뭔지 애매하고 이해하기 어렵고 나같은 초보자들이 제일 궁금해 하는 것이다. 검색을 하면 'JavaScript Object Notation', '데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 교환 형식','객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷입니다'. 이런 말들이 나오는데 여전히 이해하기 어렵다. 백문이 불여일견이라더니 드디어 눈으로 직접 보니까 이해가 되는 것 같다. 내가 fetch를 공부하며 느껴본 JSON에 대해 자세히 써보려고 한다. 자 일단 html form에서 데이터를 보내는 방법은 저번에도 포스팅했으니 간략히 리뷰만 하고 넘어간다. form의 method에 post로..

이번에는 user model에 다수의 video object를 연결시켜보자 userSchema에 객체가 여러개 들어간 배열을 만들자. videos array에 들어가는 객체의 id는 video model을 참고한다. 나중에 저 배열 안에 video model object가 쭉쭉 들어갈것이다. 그럼 이제 어디로 갈까? 이번에도 video 가 upload될때 user에 video id를 추가해야되니까. postUpload controller로 가보자! 아까 여기까지 만들어놨다. 이제 지금 세션의 user를 찾아서 그 user의 videos에 방금만든 video model의 id를 추가해보자 다행인 것은 Video.create()가 방금만든 video객체를 return 한다는 것이다. 그래서 const new..

유튜브를 생각해보면 동영상은 owner를 가지고 있다. 누가 올린 영상인지 알수있다. 그리고 user는 본인이 올린 영상을 전부 알수있다. 즉 user는 video를 가지고 있고, video는 owner를 가지고 있다. video는 단 한명의 user를 owner로 가지고 user는 다수의 video를 가진다. 일단 video model 에 owner 객체를 연결해보자 videoSchema에 owner를 추가하는데 type이 특이하다. String이나 Date, Number처럼 javascript에서 제공하는 type이 아니라 mongoose의 기능을 이용해서 ObjectId를 넣는다. owner는 objectId를 가질것이고 User모델 object의 id를 참고로 불러올것이다. 자 여기까지 마쳤다면 ..

사용자 정보를 업데이트 하는건 쉽게 생각했는데 여기서 배울점이 있다. 일단 사용자 정보를 업데이트 하기 위해서는 데이터를 입력받을 form을 만들고 post로 보내고 controller에서 req.body로 이름 붙인 각각의 데이터를 받는다. update할 user를 db에서 찾아온다음 update 하면 된다 await User.findByIdAndUpdate(id,{업데이트 쿼리}) 이렇게 간단하게 생각했는데 아무리 업데이트를 해도 내가보는 view의 input에 계속 같은 수정 전의 value가 나온다. ??? id 는 현재 session object의 user의 _id로 정의했다. 그리고 데이터베이스의 User를 업데이트 했다. 데이터베이스를 확인해보니 저장된 user의 데이터가 정상적으로 변해있었..

이제 video model 만드는 법을 배웠으니 똑같이 user model을 만드는 곳에 응용하면서 로그인까지 만들어보자 대망의 user authentication 로그인은 이렇게 하게 된다. 1. user model(Schema) 만들기 2. Join form에서 post로 필요한 데이터 받기 3. controller에서 req.body로 받아서 4. User.create()로 db에 저장 4-1. 저장하기 전에 bcrypt로 비밀번호 해싱하기 5. 로그인 controller 만들기 5-1. ID 존재 확인 5-2. PW일치 확인 6. 세션에 로그인 정보 남겨주기 이제 세션에 로그인 정보가 담겼으니 모든 req에 세션 id를 담아서 보낸다. 백엔드와 브라우저의 연결은 와이파이처럼 지속된 연결이 아니다...

오늘 느낀 try-catch의 중요성에 대해 남겨보고자 한다. user스키마를 만들면서 email과 username에 unique:true를 설정해줬다. 누군가 이메일이나 유저네임을 중복으로 사용하려 하거나 남의 정보를 도용한다면 userSchema가 미리 알아내서 가입이 안되도록 할 것이다. 나의 백엔드가 뭔가 이상하다는 것을 미리 알고 걸러준다는 뜻이다. 하지만 브라우저는? 브라우저는 아직 그런거 모른다. 그냥 post를 보낼 뿐이고 백엔드에서 받지 않으니 에러가 날것이다. 브라우저에게 만약 누군가 중복된 이메일을 쓰려고 한다면 에러내지 말고 내가 원하는 페이지를 랜더링해달라고 말하거나, redirect 시키기 위해 controller에게 전달해야 한다. password의 confirm이 안 맞거나,..