한 것

  • 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생성은 나중에 하자 ㅠ