inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

빌드 후 /dist 디렉토리가 강사님과 다른데 괜찮을까요

해결됨

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

npm run build 후 npm run start:prod 했더니 main.js를 찾을 수 없다는 에러 메세지가 나와 디렉토리를 확인해보니 아래와 같았습니다. 그리고 main.js는 /dist/src 아래에 있었고요. 일단 packakge.json에서 start:prod의 실행 경로를 'dist/src/main.js'로 변경했고, npm run start:prod해서 서비스 가동되는것 확인했습니다. vsc 종료해도 로컬 호스트로 백엔드 서버 접근과 api 사용까지 이상 없이 되는 것 확인했으니 이대로 aws에 올리고 루트 디렉토리에 /dist 폴더, .env, .gitignore, package-lock.json, package.json만 업로드 해주면 되는걸까요?

  • node.js
  • express
  • nestjs
  • typeorm
jeongho218 댓글 1 좋아요 0 조회수 277

단방향 vs 양방향 성능 차이

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 양방향 매핑을 할 때와 단방향 매핑을 할 때의 성능 차이가 있나요? 그러니까, 단방향 매핑을 한 후, 각 엔티티의 레포지토리를 통해 명시적으로 조회하는 것과, 양방향 매핑을 한 후, get을 사용하여 조회하는 상황의 성능 차이에 대해 궁금합니다. 지연로딩을 사용하는 경우, 결국 나가는 쿼리 수는 같지 않나요?

  • java
  • jpa
sangwoo0795 댓글 1 좋아요 0 조회수 585

오류 메시지는 어디서 작성하는 것이 좋을까요?

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

사용자에게 (프로그램을 사용하는 고객) 오류 메시지를 보낸다고 할 때는 백엔드에서 메시지를 만들어 보내는 것이 좋을까요? 아니면 프론트엔드에서 메시지를 만들어서 보이는 것이 좋을까요?

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
kimgni.dev 댓글 1 좋아요 1 조회수 328

경로 관련 궁금증

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

경로 관련 궁금한 점이 있습니다. 경로에 join 을 이용하는 이유가 os 에 따라 경로 구분자가 다르기 때문으로 이해하고 있습니다. 그런데 join 앞에는 하드 코딩으로 / 를 붙이는 게 보이는데 이부분도 배포 os 를 대비해야하지 않을까요?

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
kimgni.dev 댓글 1 좋아요 0 조회수 237

NextInt 후 NextLine 쓰기

미해결

김영한의 실전 자바 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오) [질문 내용] System.out.print(i+1+"번째 주문 정보 입력"); System.out.print("상품명 : "); String productName = scanner.nextLine(); System.out.print("가격 : "); int price = scanner.nextInt(); System.out.print("수량 : "); int quantity = scanner.nextInt(); scanner.nextLine(); //입력 버퍼를 비우기 위한 코드 price 입력 받을 때와 quantity 입력 받을 때 둘다 int형으로 입력을 받는데 quantity 수량 받을 때는 nextLine을 해주는데, 왜 price를 받을 때는 nextLine을 안해줘도 되는것일까요?

  • java
  • 객체지향
김혜진 댓글 1 좋아요 2 조회수 432

ftp 서버 문의 입니다

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

안녕하세요. 우분투 서버에서 ftp 서버을 사용하고 있습니다. nestjs-ftp 을 사용해서 다운로드 하면 upload, download는 가능한데(우분투 서비 컴퓨터에) upload만한 위치 주소만 링크를 시키고 싶은데 안됩니다. aws같이 다운로드 url주소만 가져올수 있는 방법이 있을까요? frontend에서 이미지를 등록을 할려고 하니 url주소가 없어서 등록이 안됩니다. aws을 사용할려고도 생각해 보았으나 사진이 많이 업로드 되어야 해서 비용적인 부담이 있습니다.

  • javascript
  • node.js
  • docker
  • rest-api
  • nestjs
corp.starcoex 댓글 2 좋아요 0 조회수 356

nest g resource관련 질문

해결됨

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

저 명령어로 posts을 만들고 나서 파일을 삭제하였다가 다시 posts를 만들고 서버를 실행하였는데 사진과 같은 오류가 생겼습니다. app.module.ts 파일에는 저런 코드가 없는데 왜 그런지 알려주세요. 그리고 올바르게 posts리소스를 삭제하는 방법을 알려주세요.

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
코린이 댓글 1 좋아요 0 조회수 341

부모의 부모 인스턴스

해결됨

김영한의 실전 자바 - 기본편

예를 들어 ElectricCar extends Car, Car extends Vehicle의 상속 관계를 가질 때 new ElectricCar()를 호출하면 부모 인스턴스인 Car도 같이 생성하는데 이 경우 Car는 Vehicle 의 상속을 받으니까 Vehicle 인스턴스도 함께 생성되나요?

  • java
  • 객체지향
wk 댓글 1 좋아요 0 조회수 481

26:30 경에 userinfo 분기가 강사님과 다릅니다.

미해결

스프링 시큐리티 OAuth2

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. OicdUserService의 아래 메서드에서 true를 반환해버리는데요. 우선 해당 함수의 if(authroization_code 이냐?) 분기를 타고, accessibleScopes가 empty 가 아닙니다. 아마 키클록에서 default 스코프가 있기 때문인거 같은데요. shouldRetrieveUserInfo 해당 영상에서는 키클록의 default 스코프가 빠진걸까요? 아니면 grant type 문제일까요? 참고로 grant type 은 별다른 옵션 없이도, registration repository에서 꺼내오는 순간 registration에는 authroization_code 입니다.

  • java
  • spring
  • spring-boot
  • oauth
비오 댓글 1 좋아요 0 조회수 382

static final 위치?

해결됨

김영한의 실전 자바 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 예제를 하면서 보던 도중 static final 위치를 바꾸면 어떻게 될까 해서... 쳐보니 이렇게 둘다 되었습니다. 혹시( static final)로 하는 이유가 있나요? 저가 생각해본게 첫째 : 관례 둘째 : 지정 범위? (연산자의 우선순위처럼 이런게 정해져 있는가 생각함.) 라고 생각해보았는데 답변 부탁드립니다.

  • java
생각하는자 댓글 1 좋아요 2 조회수 792

컬렉션 fetch join

해결됨

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

안녕하세요 강사님 프로젝트 중 궁금한 점이 있어 질문드립니다..! 6개의 엔티티를 조인해야 하는 상황인데 현업에서도 이렇게 조인을 하기도 하나요? 물론 성능에 따라 다르겠지만 몇개 정도의 테이블을 조인하는 것이 적당할까요? 컬렉션 패치 조인은 1개까지만 하라고 하셨는데 현재 상황은 3개나 컬렉션이 존재합니다. 이런경우는 어떤식으로 해결하는게 좋을까요?? 강사님께서는 어떤식으로 해결하시는지 궁금합니다 ㅎㅎ 감사합니다!

  • java
  • spring
  • spring-boot
  • jpa
모깅 댓글 2 좋아요 0 조회수 830

figma에서 code가 보이질 않아요.

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

figma에서 클릭을 해서 눌러도 옆에 properties/comment/Export 이 칸에서 code가 따로 보이지 않습니다. 어떻게 된건가요?

  • javascript
  • node.js
  • docker
  • rest-api
  • nestjs
wnsghdnjs123 댓글 1 좋아요 0 조회수 441

키보드 뭐쓰는지 궁금해요ㅠㅠ

미해결

김영한의 실전 자바 - 기본편

학습과 관련은 없지만, 키보드 소리가 너무 좋아서요..

  • java
  • 객체지향
최원호 댓글 1 좋아요 0 조회수 427

repository 관련 질문입니다.

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 내용] 안녕하세요 김영한님 강의를 듣다 의문점이 생겨서 질문을 드립니다. 무료 강의 수강 후 해당 강의를 JPA 기본서와 함께 공부 중인 학생입니다. repository관련해서 어떤 방식이 맞는지 헷갈려서 질문드렸습니다. 무료 강의 기준에선 repositry안에 있는 interface를 상속받아서 엔티티이름Repository형식으로 구현하셨는데 해당 JPA활용1 강의에선 상속 없이 class파일로 만들어서 어떤 방식이 맞는지 모르겠습니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 2 조회수 450

Exception Filter편에서 POST할 때 EntityMetadataNotFoundError에러가 납니다.

미해결

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

// users.module.ts import { Module } from '@nestjs/common'; import { UsersService } from './users.service'; import { UsersController } from './users.controller'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Users } from '../entities/Users'; @Module({ imports: [TypeOrmModule.forFeature([Users])], providers: [UsersService], controllers: [UsersController], }) export class UsersModule {} // app.module.ts import { MiddlewareConsumer, Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { ConfigModule } from '@nestjs/config'; import { LoggerMiddleware } from './middlewares/logger.middleware'; import { UsersModule } from './users/users.module'; import { WorkspacesModule } from './workspaces/workspaces.module'; import { ChannelsModule } from './channels/channels.module'; import { DmsModule } from './dms/dms.module'; import { UsersService } from './users/users.service'; import * as process from 'process'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Users } from './entities/Users'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true }), UsersModule, WorkspacesModule, ChannelsModule, DmsModule, TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', port: 3306, username: process.env.DB_USER, password: process.env.DB_PW, database: process.env.DB_NAME, entities: ['./entities/*.{js,ts}'], synchronize: false, logging: true, keepConnectionAlive: true, migrations: [__dirname + '/src/migrations/*.ts'], }), TypeOrmModule.forFeature([Users]), ], controllers: [AppController], providers: [AppService, UsersService], }) export class AppModule { configure(consumer: MiddlewareConsumer): void { consumer.apply(LoggerMiddleware).forRoutes('*'); } } // users.controller.ts import { Body, Controller, Post, Get, Req, Res, UseInterceptors, } from '@nestjs/common'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; import { JoinRequestDto } from './dto/join.request.dto'; import { UsersService } from './users.service'; import { UserDto } from '../common/dto/user.dto'; import { User } from '../common/decorators/user.decorator'; import { UndefinedToNullInterceptor } from '../common/interceptors/undefinedToNull.interceptor'; @UseInterceptors(UndefinedToNullInterceptor) @ApiTags('USER') @Controller('api/users') export class UsersController { constructor(private usersService: UsersService) {} //..... @ApiOperation({ summary: '회원가입' }) @Post() async join(@Body() body: JoinRequestDto) { await this.usersService.join(body.email, body.nickname, body.password); } import { HttpException, Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { Users } from '../entities/Users'; import bcrypt from 'bcrypt'; @Injectable() export class UsersService { constructor() {} @InjectRepository(Users) private usersRepository: Repository<Users>; getUser() {} async join(email: string, nickname: string, password: string) { const user = this.usersRepository.findOne({ where: { email } }); if (!email) { throw new HttpException('이메일이 없습니다.', 400); } if (!nickname) { throw new HttpException('닉네임이 없습니다.', 400); } if (!password) { throw new HttpException('비밀번호가 없습니다.', 400); } if (user) { throw new HttpException('이미 존재하는 사용자입니다.', 400); } const hashedPassword = await bcrypt.hash(password, 12); await this.usersRepository.save({ email, nickname, password: hashedPassword, }); } } // a-nest/src/entities/Users.ts import { Column, Entity, Index, OneToMany, PrimaryGeneratedColumn, } from "typeorm"; import { Channelchats } from "./Channelchats"; import { Channelmembers } from "./Channelmembers"; import { Dms } from "./Dms"; import { Mentions } from "./Mentions"; import { Workspacemembers } from "./Workspacemembers"; import { Workspaces } from "./Workspaces"; @Index("email", ["email"], { unique: true }) @Entity("users", { schema: "sleact" }) export class Users { @PrimaryGeneratedColumn({ type: "int", name: "id" }) id: number; @Column("varchar", { name: "email", unique: true, length: 30 }) email: string; @Column("varchar", { name: "nickname", length: 30 }) nickname: string; @Column("varchar", { name: "password", length: 100 }) password: string; @Column("datetime", { name: "createdAt" }) createdAt: Date; @Column("datetime", { name: "updatedAt" }) updatedAt: Date; @Column("datetime", { name: "deletedAt", nullable: true }) deletedAt: Date | null; @OneToMany(() => Channelchats, (channelchats) => channelchats.user) channelchats: Channelchats[]; @OneToMany(() => Channelmembers, (channelmembers) => channelmembers.user) channelmembers: Channelmembers[]; @OneToMany(() => Dms, (dms) => dms.sender) dms: Dms[]; @OneToMany(() => Dms, (dms) => dms.receiver) dms2: Dms[]; @OneToMany(() => Mentions, (mentions) => mentions.sender) mentions: Mentions[]; @OneToMany(() => Mentions, (mentions) => mentions.receiver) mentions2: Mentions[]; @OneToMany( () => Workspacemembers, (workspacemembers) => workspacemembers.user ) workspacemembers: Workspacemembers[]; @OneToMany(() => Workspaces, (workspaces) => workspaces.owner) workspaces: Workspaces[]; } 서버 실행 후 http://localhost:3002/api/users URL로 빈 값을 POST로 보내면 콘솔창에 400 이메일이 없습니다. 라는 문구가 뜬 이후에 C:\Users\xxx\Documents\Project\NestProject\a-nest\src\data-source\DataSource.ts:448 if (!metadata) throw new EntityMetadataNotFoundError(target) ^ EntityMetadataNotFoundError: No metadata for "Users" was found. at DataSource.getMetadata (C:\Users\xxx\Documents\Project\NestProject\a-nest\src\data-source\DataSource.ts:448:30) at Repository.get metadata [as metadata] (C:\Users\xxx\Documents\Project\NestProject\a-nest\src\repository\Repository.ts:53:40) at Repository.findOne (C:\Users\xxx\Documents\Project\NestProject\a-nest\src\repository\Repository.ts:597:42) at UsersService.join (C:\Users\xxx\Documents\Project\NestProject\a-nest\src\users\users.service.ts:13:39) at UsersController.join (C:\Users\xxx\Documents\Project\NestProject\a-nest\src\users\users.controller.ts:37:29) at C:\Users\xxx\Documents\Project\NestProject\a-nest\node_modules\@nestjs\core\router\router-execution-context.js:38:29 at processTicksAndRejections (node:internal/process/task_queues:95:5) 위와 같이 EntityMetadataNotFoundError에러가 발생합니다. DB 커넥션 부분도 확인해보고, entities 부분이 문제인가 싶어 아래와 같이 변경도 해보았지만 TypeOrmModule.forRoot({ entities: ['./entities/*.{js,ts}'], ], 해결되지 않아 질문드립니다. 추가적으로 \data-source\DataSource.ts 부분과 \repository\Repository.ts부분은 실제 디렉토리에 없는 것들인데 왜 뜨는지도 모르겠습니다. 해결 방법이 있을까요?

  • node.js
  • express
  • nestjs
  • typeorm
CB S 댓글 2 좋아요 0 조회수 458

아니 수업중에 뭘 먹고 있으면 어떡해요;

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

어이없네.. 쿰척쿰척 먹는걸 왜 돈낸 강의에서 들어야함;; 진짜 짜증나네진짜

  • javascript
  • node.js
  • docker
  • rest-api
  • nestjs
leejken530 댓글 2 좋아요 -2 조회수 502

put요청과 post요청의 차이는 뭘까요?

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 코드팩토리 통합 링크 https://links.codefactory.ai Flutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! 안녕하세요! 공부하다 궁금해서요 post도 추가할 수 있고 결국 put도 추가할 수 있는데 그럼 post랑 put의 차이점은 명확하게 뭘까요?

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
찬찬잉 댓글 1 좋아요 0 조회수 366

Ioc 컨테이너에서 관리 중인 인스턴스는 클래스마다 하나씩만 존재할까요?

해결됨

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

안녕하세요. 섹션 7. 의존성 주입과 제어의 역전에 대해 보고 있습니다. 해당 부분을 보다가 의문점이 생겼습니다. 만약 B라는 클래스가 동시에 두군데에서 필요하다면 Ioc 컨테이너는 B 인스턴스를 두개를 생성해서 주입하나요? 아니면, 인스턴스는 무조건 하나만 생성하여 참조값으로 주입하는 건가요? 답변해주시면 감사하겠습니다.

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
wookim 댓글 1 좋아요 1 조회수 394

diskStorage 사용관련 에러 문의

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

안녕하세요. storage코드 작성 후 diskStorage관련하여 TypeError가 발생하였습니다. 강의 내용과 동일하게 작성을 하였는데 빌드 시 해당에러가 발생하고 diskStorage의 인자에 아무것도 넣지 않아도 동일한 에러가 발생하는데 원인이 무엇인지 알 수가 없어서 글을 올립니다. module 코드입니다. error_msg코드입니다.

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
bluelf1004 댓글 3 좋아요 0 조회수 534

안녕하세요:) Websocket사용 용도 질문드립니다.

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

강의 완강하고 요즘 연습하면서 한 가지 궁금증이 생겨서 질문드립니다. websocket 사용 용도가 실시간 커뮤니케이션이라고 알고 있는데요 인스타그램으로 예를 들면 다른 사람을 팔로우하면 바로 팔로우 카운트가 실시간으로 올라가는 거랑 유튜브에 댓글들이 실시간으로 생기는 방식들이 전부 webscoket으로 구현하는 게 맞나요?? 인스타처럼 상대방을 팔로우하면 제 팔로잉 카운트가 증가하는 동시에 상대방의 팔로워 카운트가 증가하는 로직을 만들었는데 곰곰이 생각해 보니 팔로우 카운트 증가는 제가 어떠한 http요청 없이 실시간으로 올라가고 내려가는데, 일반적인 api로직을 만드는 방식으로 하는 게 맞나 하는 의문이 생겨서 질문드렸습니다~

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
5km 댓글 1 좋아요 0 조회수 332

인기 태그

인프런 TOP Writers

주간 인기글