목요일 만큼은 새로운 것에 도전하기 위해서 힘쓰는 날이 될 것이다. 금일은 우선 서버 알림?알람?에 대해서 알아볼 생각이다. 우선 nestjs 기반으로 알아보려고 한다.
fetch 시 find 함수를 활용하여 다른 테이블에 relation을 설정하여 join 효과로 데이터를 가져올 수 있었다. 좀더 안정적인 방법으로 QueryBuilder를 활용하여 'leftjoinAndSelect'를 활용하였다. 그렇다면 전체 fetch는 이렇게 할 수있는데, 배열에 있는 객체들 중 내가 join된 키값을 가져오려면 어떻게 해야 하는 것인가.
Mysql에서는 inner 조인을 통해여 멀티 테이블에서 내가 원하는 column을 가져올 수 있다고 했다. 그래서 Dbeaver에서 어떻게 어떻게 가져왔는데 말이다. 컬럼명이 조금 이상하게 들어 갔다. 코드에서느 ProjectParticipant라고 했는데 Mysql에서 project_participant로 되어 있었다.(사실 이것도 Dbeaver에서 그런것이라 확인이 필요하다) 그래 좋다. 그러면 이것을 queryBuilder를 통해서 구현할 수 있을까 그렇지는 못했다. 그렇다면 전체 결과값으로 for문을 돌려야 할지 모르겠다.
지난번에 배운 'query'문을 직접 출력할 수 있게 시도 하였다.
const test1 = await this.projectParticipantRepository
.query(
`SELECT project_participant.projectProjectId ,user.userId ,user.userImageURL
FROM project_participant, user
WHERE
(project_participant.userUserId = user.UserId
and project_participant.projectProjectId ='${projectId}');`,
);
Select~에서 컬럼을 추가하면 원하는 대로 나오기는 하지만... 컬럼명이 저렇게 작동 되는 것에 대해 굉장히 이질감이 들었고 이해하기 어려웠다.
새로운 것을 스스로 배운 다는 것이 얼마나 어려운 것에 대해 알았다. 그리고 현재 알고 있는 코딩 지식이라는 것이 얼마나 좁다는 것을 알았던 하루이었다. 처음에는 firebase라는 것이 있다고만 알고 알림이나 알람 기능에 대해서 알아보려고 했다. nestjs 에서는 Events , SSE(Server Sent Events), Cron, Subscriptions에 대해 알아보려고 했다.
Events, SSE, Cron은 서버사이드에서 확실히 하는 것이었지만, 프론트 적으로 알람을 어떻게 받는 것인지에 대한 이해가 적어 subscriptions는 대충 넘기고 바로 firebase로 알아봤다.
결론부터 말하자면 아무것도 구현할 수 없었다. Firebase를 통해 알람 구현한 블로그들을 찾아서 우선 따라하면 되지 않을까라는 근거없는 자신감으로 부딪혔던게 문제였을까.
우선 가장 문제는 nestjs에서 구현 하는 케이스를 먼저 찾지 않아, Docs나 다른 블로그를 봐도 firebase연결조차 하지 못했다.
이렇게 삽질을 하고 나니 현재 코딩 지식의 폭이 정말 얇기도 하고... 검색 키워드를 너무 포괄적으로 하는 것이 아닐까 반성도 많이 했다.