오늘은 axios를 사용해서 개발하고 있었는데 갑자기 에러가 떠버렸다. 해당에러를 보면 "require statement not part of import statement." Eslint 에러라고 나온다. 이전에 Eslint를 까다롭게 걸어두긴 했는데 지금은 급하게 개발을 해야되는 상황이여서 일단은 Eslint에서 해당 require를 비활성화 시키는법에 대해 포스팅 해보려고 한다. eslintrc.js 파일에서 해당코드를 추가시켜준다. module.exports = { ... rules: { ... '@typescript-eslint/no-var-requires': 0, } } 이제 돌려보면 관련 Eslint에러가 사라진것을 볼수있을 것이다.
오늘은 객체의 속성이나 문자열의 개수 구하는 법에 대해 포스팅 하려고 한다. ".length" 는 배열에서 밖에 사용을 못해서 객체나 문자열에서는 사용하지 못한다. dto.parent_sort_depth 를 콘솔찍어보면 3,4,5,6,7 이라는 문자열로 나온다. 이 문자열의 길이를 구하려면 어떻게 해야할까? Object.keys().length; // 괄호안에 dto.parent_sort_depth 를 넣어준다. Object.keys(obj).length를 하게 되면, 해당 문자열의 길이, 크기를 리턴받을 수 있다. 따라서 Object.keys(dto.parent_sort_depth).length를 해보면 5가 리턴 된다. 문자열 뿐만 아니라 객체(Object)에도 똑같이 사용할 수 있다. blanc이라..
NestJS로 개발을 하다가 값이 안나오고 Promise { }이 나와서 포스팅 해보려 한다. 정말 단순한 문제고 비동기함수 - Promise, async/await에 대해서만 이해를 하고있어도 간단히 해결 할 수 있다. 비동기 함수에 대해서는 다음에 제대로 정리해서 포스팅을 하겠다. 우선 어쩌다가 이런 상황이 발생했는지 보자. 간단한 내용말고는 service부에서 로직을 짜야하는데 포스팅을 위해 급하게 짠거니 감안하고 봐주시길. 꾸벅.. 자, 해당코드를 돌렸더니 Promise { } 오류가 발생했다. "const vote_ data =" 부분을 보면 서비스 부에서 값을 받아오는데 앞에서 async로 비동기를 선언했기 때문에 반드시 Promise로 반환한다. Promise는 3가지 상태가 있는데 pend..
오늘은 순환 종속성(Circular Dependency)에 대해 알아보자. NestJS로 프로젝트를 구현하다가 VoteController에서 CommentService를 사용하고 CommentService에서 VoteRepository를 사용해야 되는 케이스가 생겼다. 저번에는 단방향인(?) 공유 모듈을 사용했었는데 이번에는 양쪽 모듈에서 다 필요로하는 쌍방향(?) 모듈이다. https://ilikezzi.tistory.com/20 [Nest.JS] @Module의 특징과 공유모듈(shared module) 사용하기 공유모듈을 사용하다가 에러가 떠서 @Module에 대해서 스터디하고 해결까지 완료한 내용을 포스팅 해보려고 한다. 우선 @Module을 먼저 알아보자. Module 이란 무엇인가? 각 애플리..
회사에서 개발중인 프로젝트를 퇴근 후 집에서 마저 하려했더니 다음과 같은 에러가 발생했다. ERROR [TypeOrmModule] Unable to connect to the database. Retrying (4)... Error: connect ETIMEDOUT 해당 에러를 확인하면 DB연결이 안됬다는 얘기다. 갑자기 왜 DB연결이 안됬을까? 회사에서 DB를 AWS를 통해서 사용하는데 미리 정해둔 EC2 보안그룹에 우리집 IP가 등록 되지 않아서 뜨는 에러다. 해결방법은 간단하다. 우선 AWS EC2에 접속후 인스턴스(실행중)에 들어가면 지금 실행중인 인스턴스 목록이 나올 것이다. 그중에 관련DB 인스턴스에 들어가서 보안을 누르고 해당 보안그룹 링크로 들어간다. 그럼 인바운드 규칙이 보일텐데 여기서 ..
공유모듈을 사용하다가 에러가 떠서 @Module에 대해서 스터디하고 해결까지 완료한 내용을 포스팅 해보려고 한다. 우선 @Module을 먼저 알아보자. Module 이란 무엇인가? 각 애플리케이션에는 최소한 하나의 모듈인 루트 모듈이 있습니다 . 루트 모듈은 Nest가 애플리케이션 그래프를 구축하는 데 사용하는 시작점입니다 . Nest가 모듈과 공급자 관계 및 종속성을 해결하는 데 사용하는 내부 데이터 구조입니다. 매우 작은 응용 프로그램은 이론적으로 루트 모듈만 가질 수 있지만 일반적인 경우는 아닙니다. 구성 요소를 구성하는 효과적인 방법으로 모듈을 강력하게 권장 한다는 점을 강조하고 싶습니다 . 따라서 대부분의 애플리케이션에서 결과 아키텍처는 각각 밀접하게 관련된 기능 집합을 캡슐화하는 여러 모듈을 ..
오늘은 JavaScript map() 함수의 기능중 한개에 대해 간략하게 포스팅 해보려고 한다. 우선 코드를 보자. - service부 일단 코드를 간략하게 설명하면 dto를 파라미터로 받아서 해당 repository에서 검색후 결과가 없을경우 에러처리를 해주는 부분이다. 콘솔찍은 결과도 확인 해보자. 이렇게 배열로 해당 결과값이 나오게 된다. 하지만 나는 이 결과값에서 keyword_uuid만 뽑아서 사용을 해야되는 상황이 생겼다. 이럴때..! map() 함수를 사용하면 된다. - service부 변수를 선언하고 타입은 배열로 지정을 해준다. 앞서 변수로 선언한 keywordFollowList에 .map() 함수를 사용해서 원하는 값을 추출해서 새로운 배열로 만들 수 있다. 나는 keyword_uuid..
그동안 TypeOrm에서 IN조건으로 배열 통채로 검색이 안되는줄알고 service부에서 for문을 돌려서 uuid를 일일히 검색을 했었다. 그랬더니 이처럼 너무나 비효율적으로 SELECT쿼리 커넥션이 여러번 이뤄지는걸 볼 수 있다. 이러면 당연히 성능에도 영향을 끼친다. 그래서 서칭을 하다가 TypeOrm으로 한번에 배열로 검색을 할수있다는걸 알게 되었다. 이런...! - repository부 여러개 검색하려는 uuid를 배열로 where조건에 In을 써서 이처럼 한번에 할 수 있다. 윽 이렇게 쉽게 되는걸 굳이 for문을 돌려가며 했다니,,,, 열심히 하자. 아직 갈길이 멀었다.
오늘은 NestJS에서 데코레이터중 하나를 포스팅 해보려고 한다. Api개발을 할때 Controller에서 User정보를 토큰 값으로 받아서 개발을 할때 @CurrentUser 라는 데코레이터를 많이들 사용할 것이다. - controller부 이처럼 @CurrentUser() user 를 사용하게 되면 "user" 에 토큰으로받은 유저정보가 담기게 될것이다. console.log(user)를 해보면 user정보가 잘 넘어온다는 것을 확인해 볼 수 있을 것이다. 하지만 이럴경우 Service부로 넘어가는 파라미터가 두개가 되고 user관련 데이터 정제를 하게될 시 코드가 길어진다는 단점이 있다. 그래서 이런단점을 커버해주기 위해서 요새는 @CurrentUser 대신 다른 데코레이터를 사용한다. @UseIn..
에러 코드가 상당히 긴편이다,, NestJS에서 api를 개발하고 돌려볼려는데 갑자기 에러가 나왔다. "Nest can't resolve dependencies of the FollowsService (?). Please make sure that the argument Repository at index [0] is available in the Appmodule" 에러로그를 보면 index[0] 위치의 Repository가 Module에서 사용가능한지 확인을 요구하고 있다. 여기서 Index[0]이란? Service 클래스의 생성자에 주입한 첫번째 인자를 뜻한다. @Injectable() export class FollowsService { constructor( private readonly fol..