한 것
-
Login Mutation 구현
- jwt 발급
- user 체크 후 없으면 생성
-
Apollo Mongo DataSource 적용
- graphql datasource module 생성
-
frontend login mutation 적용 및 로그인 redirect
- useToken customHook
-
graphql authenticate 적용
- graphql context module 생성
- odesay 2차까지 들음
잘한것
- 몰랐던 Apollo Mongo DataSource 적용한 것
- odesay 2차까지 완료
- graphql module화 잘 하고 있음
- graphql 적응 잘 하고 있음
못한것
-
오늘 테스크 카드 할당량 못채움…
- mock data랑 geoJson생성은 나중에 하자 ㅠ
Retrospect
오늘 드디어 로그인을 성공했다.
graphql로 로그인을 어떻게 해야되나 mongoDB는 어떻게 꽂아야되나 정말 걱정 많이했었는데 이 부분들이 해소되어 너무 좋다.
graphql 로그인은 mutation으로 구현했고, user가 없으면 생성시키는 로직으로 하였다.
- 회원가입 너무 귀찮잖아…
token 발급까지 성공했고 그 다음 odesay 2차를 들었다.
하지만 왠걸 datasource라는 것이 있는것을 알게되었고 이 dataSource는 내부적으로 캐싱기능이 있어서 사용하는게 좋아보였다.
물론 강의는 dataSourceRest라서 나와 다른 dataSource를 사용한 것이지만 db를 쓰는 나는 db관련 즉, mongoDB에 대한 dataSource가 있을 것이라고 생각했고 찾아보니 있었다.
이래저래 또 서칭하고 삽질하면서 apollo datasource mongodb를 적용하였다.
근데 강의에서는 한번 쿼리 날리고 두번째 쿼리에서 시간이 확 줄던데 나는 똑같았다…
그냥 쌩으로 mongoose model 썼을때랑 차이가 없는데 이거…
암튼 datasource 쓰면 좋다고 하니까 써서 만족!
그 다음으로 authenticate를 해야했는데,
apolloserver의 context를 사용해야 했다.
요건 전역으로 사용하게 되는 건데, req 객체를 받을 수 있었고 이 req객체를 받아 header에서 token을 꺼낸 뒤에 verify하고 리턴해주면 되었다. (이번엔 auth로 리턴)
- 예전에는 user 객체로 통째로 들고다녔는데 이번엔 필요하면 쿼리로 쓰면 되는 graphql이니 _id만 넣고 댕기기로 하였다.
요건 예전 express할 때 authenticate middleware 방식이랑 똑같았고 쓰는것도 각 엔드포인트 컨트롤러 레벨에서 쓰듯이,
graphql 또한 resolver 레벨에서 체크하면 되었다.
- 요것도 따로 auth module화 하였음
그 뒤 post, area 스키마 타입 정의하고 끗.
mock data랑 geoJson생성은 나중에 하자 ㅠ