갈고리살인마한테 당해볼래?

·2022년 7월 22일
0

장난감

목록 보기
4/7

기다리던 회사는 최종탈락했고 최종합격 받았던 회사에서는 다음주 화요일에 답을 줄 수 있다길래
그냥 내 할일이나 하자 라는 생각으로 미니프로젝트를 집중하자는 생각이 들었다.

Gql 리턴값이 필수가 아닐 수도 있다고?

요런 사진을 올렸는데 아래에 이런 멘션이 달렸다.

나는 지금까지 리턴값이 Null이 생길 경우에는 에러를 리턴시키는 방식으로 해결을 해왔다.

 async update({ updateDiaryInput }) {
    const { id, password, room, ...data } = updateDiaryInput;

    const isDiary = await getConnection()
      .createQueryBuilder()
      .select('diary')
      .from(Diary, 'diary')
      .leftJoinAndSelect('diary.room', 'room')
      .where({ id })
      .andWhere({ room })
      .getOne();

    if (!isDiary) throw new Error('Diary Id Not Found'); <-

    const isPassword = bcrypt.compareSync(password, isDiary.password);

    if (!isPassword) throw new Error('Diary Password Not Match'); <-

    const diaryData = await this.diaryRepository.save({ ...isDiary, ...data });

    return diaryData;
  }

그런데 리턴값이 Nullable이 가능하다는 것을 보고서 적어봤는데 바로....옵션에 값이 있었다.

생각도 못하고 있었다 정말(.....)
어지간하면 다 달아놔야할 것 같다는 생각도 들었고,

리턴값이 없다면....그건 에러상황이 아닌가? 라는 생각도 계속 하고 있어서 긴가민가한 것 같다.

참고하라고 주셨던 자료
https://github.com/Yelp/graphql-guidelines/blob/main/docs/nullability.md

미들웨어,,,인터셉터,,,유저가드,,,롤,,,,뭐?

지금 만들고 있는 미니프로젝트의 서버단은 비밀일기 컨셉을 가지고 제작을 하고 있다.

비밀일기에서 중요한 것이 뭘까?

바로 보안이다. 비밀일기인데 남들이 아무나 볼 수 있다면 그건 그건 퍼블릭일기다(....)

그래서 어떤 고민을 했냐면

미들웨어로 모든 페이지를 접근하기 전에 쿠키를 확인한다. 너, 인증하고 지나가야한다.
이라는 조건으로 고민을 하다가, 어떻게 하면 좋겠다! 라고 생각해서 트위터에 올렸는데

갈고리살인마에게 K.O 당했다

독학의 문제점에 대해서

독학이라는 공부 방식을 택했을 때, 오는 문제가 무엇일까 고민을 하다보면 두가지 문제가 있다는걸 알 수 있다.

  1. 내가 모르는게 뭔지 모른다.
  2. 모르는데 질문을 할 사람이 없다.

그런데 나는 저 두가지를 모두 해결할 수 있는 구조를 가지고 있다.

수많은 팔로워분들께서 내가 삽질하는 내용을 올릴 때 마다 한마디씩 던져주고 가신다.

심지어 정답을 주시는게 아닌데

  • 그것을 하면 발생할 수 있는 의문
  • 해결하기 위해서 필요한 키워드

이런 것들을 알려주셔서 나는 조금 더 좋은 조건에서 공부를 하고 있다고 생각한다.

뭐, 내가 특별한게 아니라 그냥 그만큼 노력하는 모습을 티내고 다녔기 때문에 이런 것을 경험해볼 수 있다고 생각한다.

짝사랑을 하면 아무런 의미가 없는 것처럼, 나는 기회를 얻기 위해서는 많은 사람들의 눈에 비춰질 상황에 놓여져야한다고 생각한다.

물론 글을 쓰는 것이야 내가 재밌어서 쓰고, 타인들에게 공유하고 싶은 마음에 트위터에 올리고 있긴 하지만. 그것 자체가 티를 내고 다니는 것 이라고 생각한다.

어제 갈고리 살인마에게 당하면서 의문이 들었을 때 올려놓은 트윗에 답변해주신 민규님

다시 원점으로 돌아와서, 어떻게 해결?

어떻게 하면 좋을까, 고민을 하던 차에 1호님께서 이런 자료를 만들어서 주셨는데

이것을 기반으로 작업을 진행하려고 한다.
내가 생각한 것과 동일한 구조로 되어있다, 구현은 해봐야 알 것 같지만서도

그래서 내가 지금 생각하고 있는 것은 어짜피 방 생성을 제외하고는 모든 동작에 인증과정이 필요하다.

최상단에 가드를 달아서, 모조리 검증을 해보는 로직으로 생각을 해보고 있는데
@Roles이라는 커스텀 데코레이터를 만들어서 API에 붙여보는 것은 어떻냐고 질문을 주셔서

이 부분에 대해서도 고민을 조금 해보고, 작업을 진행해봐야할 것 같다.


작업하자 작업~

profile
물류 서비스 Backend Software Developer

0개의 댓글