묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결프론트 개발자를 위한 백엔드 101 (NestJS, TypeORM)
어렵네요
✅ 모든 질문들은 슬랙 채널에서 답변드리고 있습니다.💡 ”로펀의 인프런 상담소” 슬랙 채널 가입하기 💡평일중에는 퇴근 이후(저녁 7시)에 답변을 받아보실 수 있고, 주말중에는 상시 답변드리고 있습니다. 어렵네여
-
미해결따라하며 배우는 NestJS
로거 객체 질문
왜 mian에서는 그냥 로거 쓰는데 컨트롤러에선 객체를 만들어서 진행하나요??
-
미해결프론트 개발자를 위한 백엔드 101 (NestJS, TypeORM)
db연결이 다되었는데 tables에 posts 테이블이 안생겨요
초반 dmg로 다운받을때도 , 다운받고 뭐 초기셋팅 진행해서 해당 로그처럼 서버 데이터 베이스 선택하는거 psql에 없었는데, 명령어 찾아서 아이디 만들고 권한주고 db만들고 꾸역꾸역해서 jdbc 연결했더니 테이블안생김.. ㅈㄴ 스트레스받음. 노션에 있는거 긁어서 그대로 해서 틀린거없음 커서에서 검증도함 대체 원인을 모르겟
-
미해결프론트 개발자를 위한 백엔드 101 (NestJS, TypeORM)
SQL Sheell
SQL Sheell 깜빡 열렸다가 꺼지는데 postgresql-18.0-2-windows-x64 설치 해야 되나요?
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
강의자료는 어디서 다운받나요?
이런 질문 드려 죄송해요...;;
-
해결됨따라하며 배우는 NestJS
회원가입 기능 구현 버전 변경에 따른 코드수정(해당 사항은 업데이트 예정이 없나요?)
Custom Repository 부분에서 에러가 나서 해결 하긴 하였으나 맞는 과정인지는 잘 몰라 문의드립니다.강의에서 사용하는 @EntityRepository방식은 구버전(0.2.x) 방식으로 최신버전에서는 제거되었습니다. 강의 코드를 그대로 따라하면 ... is not a function같은 에러가 발생합니다.그래서user.repository.ts, auth.modules.ts 수정, auth.service.ts를 수정 1. user.repository.ts 수정 1. user.repository.ts 수정 Repository를 일반 서비스로 만들기 위한 핵심 작업입니다. 수정 내용: @EntityRepository(User) 데코레이터를 삭제하고 @Injectable()을 추가했습니다. Repository 클래스를 초기화하기 위해 constructor (생성자)를 추가하고, 그 안에서 super()를 호출했습니다.// src/auth/user.repository.ts import { Injectable } from '@nestjs/common'; import { DataSource, Repository } from 'typeorm'; import { User } from './user.entity'; // ... @Injectable() // ✅ 변경 export class UserRepository extends Repository<User> { // ✅ 생성자 추가 constructor(private dataSource: DataSource) { super(User, dataSource.createEntityManager()); } async createUser(/* ... */): Promise<void> { // ... } }2. auth.service.ts 수정-> providers 배열에 UserRepository를 추가했습니다.이유: providers 배열에 등록해야만 AuthModule이 "아, UserRepository라는 서비스를 모듈로 포함시켰습니다.// src/auth/auth.module.ts import { UserRepository } from './user.repository'; // ... @Module({ imports: [TypeOrmModule.forFeature([User])], controllers: [AuthController], providers: [ AuthService, UserRepository, // ✅ UserRepository를 providers에 등록 ], }) export class AuthModule {}3.auth.service.ts 수정> 서비스에서 Repository를 주입받는 방식을 변경합니다.수정 내용: @InjectRepository(User) 데코레이터를 삭제하고, 생성자에서 UserRepository를 직접 타입으로 선언하여 주입받습니다.이유: UserRepository는 이제 마법 같은 존재가 아닌 일반 서비스이므로, 다른 서비스를 주입받을 때와 똑같이 클래스 이름만으로 간단하게 주입받을수 있습니다.// src/auth/auth.service.ts import { Injectable } from '@nestjs/common'; import { UserRepository } from './user.repository'; // 🗑️ import { InjectRepository } from '@nestjs/typeorm'; <- 삭제 @Injectable() export class AuthService { constructor( // 🗑️ @InjectRepository(User) <- 삭제 private userRepository: UserRepository, // ✅ 직접 주입 ) {} async signUp(/* ... */): Promise<void> { return this.userRepository.createUser(/* ... */); } }일단 이런식으로 수정했는데 이 과정이 맞는지는 잘 모르겠습니다! 강사님이나 따로 혹시 올라와 있는 코드가 있다면 참고해보겠습니다!
-
미해결프론트 개발자를 위한 백엔드 101 (NestJS, TypeORM)
Nest.js와 레이어드 아키텍처
nest.js에서의 레이어드 아키텍처 구조에 궁금한 점이 생겨 질문을 남깁니다각 계층별 실제 구현 파일을 아래와 같이 이해하면 될까요?repository와 entity가 정확히 어떤 계층에 속하는지 궁금합니다. Presentation Layercontroller.tsApplication Layerservice.tsDomain Layerrepository.tsentity.tsData Transfer Objectdto.ts
-
미해결프론트 개발자를 위한 백엔드 101 (NestJS, TypeORM)
TypeORM 마이그레이션
우선 typeorm.ts, app.modules.ts 두 파일 코드 복사 붙여넣기 하면app.modules.ts 의TypeOrmModule.forRootAsync({ inject: [ConfigService], useFactory: async (configService: ConfigService) => configService.get('typeorm'), }),useFactory에서 린트에러가 발생합니다.configService.get('typeorm')의 타입이 undefined 일 수도 있어서 에러가 발생하는데 타입 지정해서 서버 실행하면 일단 실행은 됩니다.문제는 이 다음에package.json에 마이그레이션 스크립트 추가 후서버 실행하고 터미널 창 새로 열어서 npm run migration:generate --name=Initial_Migration 명령어 실행하면 migration 관련 파일은 잘 생성이됩니다.내용도 잘 들어가있어요 posts 테이블 만들고 index 들 설정하는 쿼리들 다 제대로 적혀있습니다만 npm run migration:run 명령어 실행시 migrations 테이블은 생성되는데 안에 레코드가 하나도 없고, posts 테이블은 아예 생성이 안됩니다.
-
미해결따라하며 배우는 NestJS
파일을 찾지 못하는 오류가 계속 뜹니다
Cannot find module './app.controller' or its corresponding type declarations.Cannot find module './app.service' or its corresponding type declarations.저런 내용이 아예 없는데 코드에서 저게 잘못됐다고 뜨네요....파일구조도 다 맞는것 같은데왜 계속 저런 오류가 뜨는걸까요ㅜㅜ
-
미해결따라하며 배우는 NestJS
services와 repository 파일에서 해야하는 작업
user.repository에서는 db작업을 하고 user.service에서는 cotroller와 repository 그 사이 에 무언가 작업을 해야하는걸로 생각해 왔는데 이번 강의에서 user.service에서 db조회를 하셔서 각각 파일의 역할을 잘 모르겠습니다.user.service와 user.repository 파일에서 각각 해야하는 작업이 뭔지 알고싶습니다
-
해결됨프론트 개발자를 위한 백엔드 101 (NestJS, TypeORM)
NestJS, TypeORM의 typeorm.ts에서 autoLoadEntities: true와 entities: []의 공존
안녕하세요.TypeORM 마이그레이션 실습에서 아래와 같은 typeorm.ts 파일을 작성했습니다.import { registerAs } from '@nestjs/config'; import { DataSource, DataSourceOptions } from 'typeorm'; const config = { type: 'postgres', host: `${process.env.DB_HOST || 'localhost'}`, port: parseInt(`${process.env.DB_PORT || '5432'}`, 10), username: `${process.env.DB_USERNAME || 'test'}`, password: `${process.env.DB_PASSWORD || 'test'}`, database: `${process.env.DB_DATABASE || 'inflearn'}`, entities: ['dist/**/**/*.entity{.ts,.js}'], migrations: ['dist/migrations/*{.ts,.js}'], autoLoadEntities: true, synchronize: false, }; export default registerAs('typeorm', () => config); export const connectionSource = new DataSource(config as DataSourceOptions); 이 때, autoLoadEntities: true 항목이 있음에도, entities: [] 항목이 있어야 할 필요가 있나요? 없어도 코드 동작에 차이가 없는 것인가요?앞선 강의에서 autoLoadEntities: true 인 경우, entities: []를 따로 설정하지 않아도 된다는 내용이 있었던 것 같아서 헷갈립니다.감사합니다.
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
TypeORM과 mysql을 사용하시는 분들
TypeORM과 mysql을 사용하여 실습하시는 분들은아래와 같이 Entity 정의에 'class-transformer' 라이브러리에 있는 '@Exclude()'데코레이터와 'instanceToPlain'메서드를 사용하여 password 노출을 막을 수 있습니다.위 사진처럼 Entity 파일에 @Exclude() 사용고양이 데이터를 불러오는 서비스(getCurrentCat) 로직에서 위와 같이 instanceToPlain을 사용하시면 됩니다!
-
해결됨프론트 개발자를 위한 백엔드 101 (NestJS, TypeORM)
터미널에서 자동완성 되는건 어떤 프로그램인가요?
터미널에서 자동완성 되는건 어떤 프로그램인가요?맥유저입니다
-
해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
질문 있습니다.
안녕하세요. API 개발을 하다가 클라이언트의 IP를 가져와서 사용 할 일이 생겼습니다.간단하게 Request 객체의 ip 값을 가져와서 사용하려고 하는데, 저희 클라이언트가 NextJS의 SSR을 사용해서 렌더링을 하고있어서 브라우저에서 요청을 하면 NextJS 서버 -> NestJS 서버로 요청이 들어가 IP가 요청을 보낸 유저의 IP가 아닌 배포하고있는 서버의 IP로 들어오고 있습니다. 이 문제는 user-agent 값 확인을 통해서 원인을 파악 할 수 있었습니다. 문제를 해결하기 위해 NextJS에서 axios요청을 할 때, 헤더에 클라이언트의 원본 아이피를 가져와서 달아주고 서버에서 해당 헤더의 값을 가져와서 사용하고자 했습니다.생각처럼 됐으면 좋았겠지만, 왜인지 서버에서는 계속 배포하고있는 서버의 IP를 가져오고 있는 상태입니다. 커스텀 헤더에 달아준 값을 확인해봐도 서버 IP가 찍히고 있는데요. 클라이언트 로그에서는 또 원본 IP가 잘 찍히고 있습니다.Nginx를 사용중인데 Nginx에서 문제가 생기고 있는건지, 어디가 잘못된건지 감이 안와서 질문 남깁니다. 어떻게 하는게 좋을까요? 추가로, 클라이언트의 원본 IP를 받아오는 다른 방법이 있을까요?감사합니다.
-
미해결따라하며 배우는 NestJS
커스텀 파이프에서 value의 타입이 string 이 아닐때
여기서 value.toUpperCase()를 먼저 실행하고 있는데, value에 toUpperCase 메소드가 없는 타입이 온다면 어떻게 될까요?
-
해결됨프론트 개발자를 위한 백엔드 101 (NestJS, TypeORM)
module에서 import, export, provider, controller..
안녕하세요 캡쳐 사진은 auth.module인데요 다름이 아니라 import, export, provider, controller 할때 무엇을 적을지 어떻게 명확히 아나요?userModuel같은 경우는 auth.conroller나 service에서 사용되지오 안하고(강의시점), stratigies 파일에서도 사용되지 않았습니다. 이리 구현할 내용을 알고 위에처럼 적으신걸까요?
-
해결됨프론트 개발자를 위한 백엔드 101 (NestJS, TypeORM)
슬랙채널 가입이 안됩니다.
이 부분 해결하는 방법은 아실까요?
-
미해결따라하며 배우는 NestJS
nestjs 기본 구조 설명에서 궁금한게 있습니다.
기본 구조 설명을 듣던 중에 eslintrc.js라는 폴더가 있다고 하시는데 nest가 11.0.2인 버전에서는 없는 것 같아서요. 분명 이 기능을 하는 파일은 있을 텐데.. 혹시 eslint.config.mjs가 아닐까 궁금합니다.
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
(강의 5:42 질문) providers를 통한 여러 개의 인스턴스 생성 & exports 통한 싱글톤 생성
providers를 통해 등록된 UsersService는 싱글톤인지 궁금하여 nest.js 공식문서를 찾아보았습니다. UsersModule의 exports를 통해 캡슐화된 공급자들을 내보내고, AppModule에 UsersModule을 imports배열에 추가해서 가져오면 providers에 등록하지 않아도 자동으로 주입을 해주며, 인스턴스를 공유하는 싱글톤으로 주입받는다고 이해했습니다. 반면, UsersService를 필요한 모듈 각각의 providers 배열에 등록하게 된다면 등록된 모듈마다 인스턴스가 생성해서 주입하는 것으로 이해하였습니다. 공식문서에는 싱글톤으로 생성되서 관리된다면 메모리를 아낄 수 있고, 리소스의 관리가 쉬워진다는데 질문 1. 리소스의 관리가 쉬워지는건 같은 변수를 공유하기 때문이라고 이해해도 괜찮을까요? 질문 2. 제가 이해한 내용에서 잘못된 부분이 있는지 궁금합니다. 질문 3. providers 배열에 모듈마다 등록해서 인스턴스를 계속 찍어내야 하는 예시가 궁금합니다.(싱글톤의 장점은 어느정도 이해가 되지만, 그 반대의 경우에는 어떤 상황에서 사용할 때 장점이 있는지 생각이 떠오르지 않습니다)(집에 가면서 생각해봤는데 설정이 서로 다르게 주입되어야 하는 경우가 있다면 사용될 수 있을 것 같습니다.)
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
코드 편집기 확장 프로그램
코드편집기에 6, 12번째 줄에 회색 바탕에 context, event, listener로 표시되어있는 확장 프로그램 저도 쓰고싶은데 혹시 vs코드에도 비슷한 프로그램 있을까요?혹시 없다면, 웹스톰의 확장 프로그램은 무엇을 쓰시는지 알 수 있을까요?