본문 바로가기
320x100

Blog189

[GraphQL] Typescript+GraphQl+TypeORM 프로젝트에 TypeGraphQL 적용하기 프로젝트를 진행하면서, 이번에 처음으로 Graphql 및 Typescript 를 도입해보게 되었다. 일단 Grahpql에 대한 첫인상은 매우좋음 이었다. 먼저 Graphql에서 쿼리를 요청하는 방식은 다음과 같다. 이런식으로 원하는 유저의 id 값, 유저명, 프로필 url 등을 원하는 값들만 클라이언트에서 선택해서 가져올 수 있다. 기존의 REST 방식의 Overfetching, Underfetching 문제를 해결한 완전한 방식인 것 같았다. 그런데 서버쪽 코드를 작성하면서 점점 느낌이 싸해졌다. 일단 현재 백엔드 구조는 이렇다. entity 디렉토리는 DB의 TypeORM엔티티들을 가지고 있다. 여기서 graphql 디렉토리는 다음과 같은 구조를 가지고 있다. inputTypes : Mutation .. 2021. 11. 8.
[TypeORM] 쿼리빌더를 통해 데이터 가져오기 현재상황과 문제 먼저, 진행하고 있는 프로젝트에서 graphql 쿼리를 작성하기 위해 하나의 질문글에 달린 태그를 가져와야 한다. 먼저 필요한 테이블들의 관계는 다음과 같다. post_question과 tag가 N:M 관계를 가지고 있고, 연결 테이블로 question_tags 를 가지고 있다. graphql 질문글 검색 쿼리는 다음과 같은 상황이다. post_questions 요청을 통해 검색할 태그 ID 배열을 넘겨주고, 질문글의 제목과, 할당되어있는 태그들을 가져오는 쿼리를 작성한 모습이다. 요구사항은 간단한데 처음에 생각보다 구현에 급급하여 코드를 날림으로 작성해놓았다. 먼저 다른 조건들(whereObj)을 통해 해당하는 게시글들을 불러오고, tagID 가 검색 쿼리에 포함되어있다면 불러온 질문글.. 2021. 11. 7.
[JS] 호이스팅(Hoisting)이란 무엇인가?? Javascript를 사용 하다보면 호이스팅 이라는 말을 들어본 적이 있을 것이다. 실제로 나도 호이스팅 이라는 말을 들어본 적만 있고, 개념이 제대로 잡혀있는 것 같지 않아 블로그에 보기 좋기 정리하려고 한다. 들어가기에 앞서 호이스팅은 let과 const가 추가된 ES2015(ES6)에서부터 var를 사용하지 않으면서 중요도가 떨어졌다. 그래도 자바스크립트의 실행 환경을 이해하기 위해 알아두면 좋을 것 같다. Hoisting의 뜻 네이버 영어사전을 통해 알아본 호이스팅의 뜻은, "끌어 올리기" 이다. 무엇을 끌어올린다는 것일까? 선언을 끌어올린다 MDN web Docs에서는 호이스팅을 "변수의 선언과 초기화를 분리한 후, 선언만 코드의 최상단으로 옮기는" 것 이라고 말하고 있다. 코드를 보면서 어떤 .. 2021. 11. 6.
mysql Can't connect to MySQL server on 'IP:3306' (61) 오류 해결 nCloud 에 Cloud DB for mysql 이 아닌 Server 에서 mysql 인스턴스를 Ubuntu 16.04 환경에서 만들고 접속할 때 Can't connect to MySQL server on 'IP:3306' (61) 비밀번호를 입력했음에도 저렇게 뜰때 해결책 # 먼저 SSL로 해당 DB 인스턴스에 접속한다. # mysql 5.7 이전 버전 nano /etc/mysql/my.cnf # mysql 5.7 이상 nano /etc/mysql/mysql.conf.d/mysqld.cnf # bind-address 구문을 찾아 0.0.0.0 으로 변경(아마 127.0.0.1 일 것임) bind-address = 0.0.0.0 # 인스턴스 재시작 이렇게 하면 (61) 오류는 해결되지만 난 두번째 에러.. 2021. 11. 4.