전체 글 36

Nest.js Repository Pattern활용하기

Nest.Js 에서 Repository pattern을 활용해 봅시다. Nest에선 컨트롤러는 서비스를 바라보고 있습니다. TypeOrm을 사용하는 중이고 서비스에 비지니스 로직만 남겨두고 쿼리로직을 분리시키고 싶다면 레포지토리 패턴을 활용하면 됩니다. controller : request, response service : business repository : query logic 이런식으로 분리해서 사용하면 조금 더 구조를 체계적으로 나눌 수 있게됩니다. 적용 전 코드와 적용 후 코드를 비교하면서 보도록 하겠습니다. 종속성 주입시 레포지토리를 만들면서 Entity를 주입하고 쿼리 로직을 서비스 안에서 만들어서 DB에 저장하는 형태를 하고 있습니다. 비즈니스 로직과 쿼리 로직이 섞여있어 지저분해 보입..

ERROR [TypeOrmModule] Unable to connect to the database. Retrying /src/entity/user.entity.ts:1import { Entity, Column, PrimaryGeneratedColumn } from "typeorm";

typeorm을 활용해서 NestJs DB 연결중 생긴 에러 원인 entity를 제대로 찾지 못함 해결방법 TypeOrmMoudule.forRoot부분에 entities 경로를 구조에 맞게 잘 작성 프로젝트 폴더 구조 entities: [__dirname + '/entity/**/*.entity{.ts,.js}',], 이렇게 경로 수정 ERROR [ExceptionHandler] No repository for "EntityName" was found. Looks like this entity is not registered in current "default" connection? 수정 후 이런 에러 발생. import { Entity, Column, PrimaryGeneratedColumn } fro..

docker: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

원인 도커로 새 DB를 연동 중 생긴 에러 해당 포트로 이미 실행중이여서 동일 포트로 실행이 불가능. 해결방법 해당 포트로 실행중인 서버를 찾은 후 죽인 후 다시 연동. os : 윈도우 11 $ netstat -ano | findstr 3306 3306포트가 겹쳤으니 3306으로 실행중인 서버를 찾읍시다. PID가 2076입니다. 관리자 권한으로 해당 PID를 죽입니다. 그후 다시 실행해주시면 정상적으로 작동합니다.

카테고리 없음 2022.03.15

NestJs 도커로 MySql 연동하기

OS: 윈도우11 설치된 Mysql 버전을 확인해줍니다. $ mysql --version mysql Ver 8.0.28 for Win64 on x86_64 (MySQL Community Server - GPL) 저는 8.0.28 버전이 깔려있네요. Docker를 설치해 줍니다. https://www.docker.com/products/docker-desktop Docker Desktop for Mac and Windows | Docker Learn why Docker Desktop is the preferred choice for millions of developers building containerized applications. Download for Mac or Windows. www.docke..

[ReactNative]TypeScript 템플릿 프로젝트 cli 에러

RN 프로젝트를 타입스크립트로 프로젝트를 생성하려고 npx react-native init LearnType --template react-native-template-typescript 해당 명령어를 입력하면 잘 되는것 같다가 error An unexpected error occurred: "https://registry.yarnpkg.com/react-native-template-react-native-template-typescript: Not found". 이런 에러가 나는데요 rn cli 개발은 이미 커뮤니티로 넘어가서 그렇다고 합니다. npm uninstall -g react-native-cli 기존 cli는 지워주시구요 npm i -g @react-native-community/cli 커뮤니..

[ReactNative]* A module failed to load due to an error and `AppRegistry.registerComponent` wasn't called.

react native로 간단한 앱 구현을 하면서 공부하던중 패키지 네임이 중복되어 파이어베이스에 등록이 되지 않았다. (패키지 네임을 변경하는건 생각보다 쉬우나 한번에 잘 생각해서 정하는 걸 추천) 변경 후 앱을 실행했는데 위 사진과 같이 에러가 생겼다. app.json파일을 열어보자 { "name": "my_first_project", "displayName": "my_first_project" } packagename은 simpletodo로 바꾸었는데 app.json은 변경하지 않아서 생긴 에러 app.json내에 name도 맞춰주니 해결되었다. 참고링크 https://stackoverflow.com/questions/62649381/invariant-violation-main-has-not-bee..

[Flutter]GetX name route like query params

Get.toNamed('/detail/:id') // '/detail/1' Get.parameter['id'] // id == 1 Get.toNamed('/detail/?id=123&name=jiun') Get.parameter['id'] // id == 123 Get.parameter['name'] // name == jiun api통신을 할 때 query parameter로 데이터를 넘기거나 body에 넣어서 넘기는 경우가 있는데 query parameter로 넘길 경우에는 위의 형태로 넘길텐데 페이지 라우팅을 할 때 위처럼 GetX를 활용하면 조금 더 통일성 있고 깔끔한 코드를 만들 수 있을것 같다는 생각이 든다. 다음번에 해당 부분을 자세히 공부해서 포스팅을 수정할 예정.

🐳Flutter 2022.02.06

[nestjs]Error: listen EADDRINUSE: address already in use :::3306

백엔드 개발도 해보고 싶어서 nestjs로 mysql과 연동을 하던 중 생긴 문제 3306포트를 죽인 후 services.msc에서 mysql을 다시 실행해도 계속 저 문제로 도돌이표처럼 돌아왔다. 계속 해매다가 발견한 해결방법은 정말 간단했다. mysql은 3306포트를 쓰고 nestjs는 3000포트를 써야된다는것 app.module.ts에선 TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', port: 3306, username: 'root', password: '1548seaw', database: 'todo', entities: [User], synchronize: false, }), 이렇게 mysql부분 port를 3306으로 연결해주고 ma..