44,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
keepConnectionAlive 는 개발시에만 켜두는 옵션인가요?
keepConnectionAlive 는 개발시에만 켜두는 옵션인가요?핫리로딩때 db가 끊어졌다는 오류 때문에 옵션을 사용한다고 설명해주셔서 여쭤봅니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
Global Guard 질문
공식문서에 보면providers: [ { provide: APP_GUARD, useClass: JwtAuthGuard, }, ], app.module.ts 에서 글로벌로 적용시킬수 있다고 하는데, 제로초님은 글로벌로 적용 안하시나요?? 또한 UndefinedToNullInterceptor 도 글로벌로 적용 안시키시는지 궁금합니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
deserializerUser 질문
local.serializer.ts 에서 async deserializeUser(userId: string, done: CallableFunction) { return await this.usersRepository .findOneOrFail( { id: +userId, }, { select: ['id', 'email', 'nickname'], relations: ['Workspaces'], //relation 을 사용해도 되지만 join 을 사용해도 가능함!! }, ) .then((user: Users) => { console.log('user', user); done(null, user); //user 가 req.user }) .catch((error) => done(error)); }부분중 { select: ['id', 'email', 'nickname'], relations: ['Workspaces'], //relation 을 사용해도 되지만 join 을 사용해도 가능함!! },에러를 나타 냅니다에러의 내용은 1개의 인수가 필요한데 2개를 가져왔다고 합니다.이부분에서의 인수를 받아오는 곳을 아무리 봐도 찾을 수가 없어 질문을 드리게 되었습니다.코드에서의 이부분은 어느곳에서 인수를 받아 오게 되는지요? 또한 해결을 하려면 어느부분을 봐야 할까요?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
미들웨어 커스텀해서 만들때 질문 드립니다!
안녕하세요 제로초님 강의 잘 듣고 있습니다!다름이 아니라 이 강좌를 듣고 플젝에서 Middleware을 좀 변환해서 사용해보고 있는데요.컨트롤러에서 @Param()으로 넘기는 값을 Middleware을 거칠때, req.params[''] 만 안되던데 혹시 이유가 있나요? 그리고 이 문제를 사용하셨던 request.get()으로 해결이 가능한가요?예를 들어 @Query()로 넘기면 쿼리스트링 값을 req.query[]로 하면 가져와지고 @Headers()로 넘겨도 req.headers로 가져와지는데 params()만 안돼서 질문드립니다!
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
url prameter당 요청제한
nestjs - throttler를 이용해 요청제한을 구현 중입니다.답변 해주신 것 처럼 ip를 제대로 확인 후 실행하니 ip 구분이 되는 것은 확인 했습니다 감사합나다.요청제한은 1분에 1회입니다.문제는 url 주소는 refresh/{summonername} 으로 되어있고 사용자 1이 해당 주소 a 라는 파라미터 값으로 요청을 보냈고 다시 b라는 파라미터 값으로 요청을 보내면 이미 1회를 보냈기에 429 에러가 뜹니다.구현해야할 기능은 파라미터값을 구분해서 파라미터값이 a,b,c ... 으로 구분을 해서 a에 요청 1번 b에 요청 1번 c에 요청 1번 이런식으로 구현을 하려 하는데 throttler로 api에서 파라미터값을 구분해서 해당 사용자가 어떤 파라미터로 요청을 했는지 구별이 가능 한가요?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
nestjs throttler
안녕하세요 현재 throttler를 이용해서 api 요청제한을 구현 중입니다.throtter 설정은 공식 문서를 보고 설정을 했는데@Throttle(3, 60) @Get() findAll() { return "List users works with custom rate limiting."; }클라이언트별로 요청 제한 기능을 구현하려는데 구글링 실력이 부족해서 찾지 못하였습니다.요청은 5회로 시간은 1분으로 했을 때사용자1 이 요청 5회를 해서 api가 block 되었을 때사용자2 까지 해당 api요청이 안되는 이슈가 있습니다.비로그인 사용자들이라 ip주소를 이용해서 식별해야할 것 같고 redis에 이정보를 담아 ttl 설정을 하면 될 것같은데 throttler에 적용 시키는 방향을 잘 못 잡겠습니다. 강의랑 별개의 내용인 점 죄송합니다.참고한 공식 문서입니다. https://docs.nestjs.com/security/rate-limiting
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
Typeorm unique column적용시 index 자동 적용 관련
@Column({ type: 'varchar', length: 100, unique: true }) @IsString() snsId: string;이런식으로 컬럼에 unique 제약조건을 붙히면 PK처럼 자동으로 index적용이 되는지 궁금합니다!
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
Class-Validator MODULE_NOT_FOUND 에러
강의를 잘 따라 가면서 공부를 하고 있는데 강좌에 나와있는대로 class-validator 을 npm -i class-validator 을 설치 후 nest를 실행하니 nest 에서 Cannot find module 'class-validator/types/decorator/decorators' 라는 에러를 나타냅니다. 혹시 몰라서 API 공식문서 에 있는 npm i class-validator class-transformer 을 다시 설치를 해보아도 같은 에러를 나타내는데 이럴 경우 어디서 확인을 해보아야 할까요?혹시 몰라서 package.json 을 살펴 보았습니다만 dependencies 내에 설치가 되어있는것으로 나왔습니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
Typeorm Connection 시 @Module 하위 useFactory 오류
Typeorm 을 이용하여 DB Connection을 맺는 부분에서 만약 .env 파일을 사용하지 않고서 app.module.ts 내에 관련 정보를 입력할시에 @Module 부분의 useFactory 가 형식을 할당할 수 없다는 에러를 자꾸 나타냅니다..... 이럴경우 어떻게 해결할까요?(슬랙에도 같은 질문 올렸습니다)
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
typeorm 다중 데이터베이스 연결
현재 데이터분석용 디비, 서비스용 디비를 사용하고 있습니다.자동화를 위해 데이터분석용 디비에서 데이터 분석을 하면 서비스용 디비로 데이터를 넣어 주려고 합니다.구글링을 해 보니이런 식으로 사용 하는 것 같은데 데이터분석 로직에는 서비스용 디비에 있는 entity들이 존재하지 않아서https://typeorm.biunav.com/en/multiple-connections.html 여기에 있는 replication부분을 확인 해보았는데 이 방법으로 디비에 연동을 해서 데이터를 넣어줄 수 있나요?아니면 다른 방법이 있을까요? 구글링 실력이 부족하여 아직 답을 찾지 못했습니다.아니면 서비스로직에서 데이터분석용 디비를 연결하여 계산 후 값을 넣어야 하나요?분석용 데이터베이스에는 로우데이터들만 있어 따로 값을 구하는 로직을 수행하여야 합니다
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
브라우저에 localhost:3030 입력시
제로초님의 Github 을 보기도 했고 영상을 정지하고 따라 해보기도 했습니다만 브라우저에서 localhost:3030 을 입력해서 접속을 하면 위 스크린샷과 같이 나오게 됩니다. 에러코드500 은 서버쪽 문제이기에 에러메시지를 확인해보면 Info Webpack is building your sources... webpack 5.74.0 compiled successfully in 656 ms [Nest] 27340 - 2022. 09. 23. 오전 1:40:04 ERROR [ExceptionsHandler] secret option required for sessions Error: secret option required for sessions at session (E:\Github\Slack\anest\dist\main.js:2474:12) at Layer.handle [as handle_request] (E:\Github\Slack\anest\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (E:\Github\Slack\anest\node_modules\express\lib\router\index.js:328:13) at E:\Github\Slack\anest\node_modules\express\lib\router\index.js:286:9 at Function.process_params (E:\Github\Slack\anest\node_modules\express\lib\router\index.js:346:12) at next (E:\Github\Slack\anest\node_modules\express\lib\router\index.js:280:10) at cookieParser (E:\Github\Slack\anest\node_modules\cookie-parser\index.js:57:14) at Layer.handle [as handle_request] (E:\Github\Slack\anest\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (E:\Github\Slack\anest\node_modules\express\lib\router\index.js:328:13) at E:\Github\Slack\anest\node_modules\express\lib\router\index.js:286:9 [Nest] 27340 - 2022. 09. 23. 오전 1:40:04 ERROR [ExceptionsHandler] secret option required for sessions Error: secret option required for sessions at session (E:\Github\Slack\anest\dist\main.js:2474:12) at Layer.handle [as handle_request] (E:\Github\Slack\anest\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (E:\Github\Slack\anest\node_modules\express\lib\router\index.js:328:13) at E:\Github\Slack\anest\node_modules\express\lib\router\index.js:286:9 at Function.process_params (E:\Github\Slack\anest\node_modules\express\lib\router\index.js:346:12) at next (E:\Github\Slack\anest\node_modules\express\lib\router\index.js:280:10) at cookieParser (E:\Github\Slack\anest\node_modules\cookie-parser\index.js:57:14) at Layer.handle [as handle_request] (E:\Github\Slack\anest\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (E:\Github\Slack\anest\node_modules\express\lib\router\index.js:328:13) at E:\Github\Slack\anest\node_modules\express\lib\router\index.js:286:9이라는 에러메시지를 출력하게 되는데 혹시나 싶어서 구글링을 해보았는데 예전에 다른강좌 에서 답변을 남기신것또한 참고를 해보았으나 해결이 되지 않아 질문 남김니다. 에러 해결을 위해 어느부분을 보면 좋을까요?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
hotReload 사용시 TypeOrmModuleOptions에서 entities Path를 넣어서 Entity를 인식시킬 수 있는 방법이 없나요?
안녕하세요 제가 강의를 다 듣고 TypeOrm 환경설정을 하는데요yarn build 후yarn nest start를 하면entities: [ __dirname + '/../**/*.entity{.ts,.js}', ],와 같이하면 Entity를 인식하는데https://docs.nestjs.com/recipes/hot-reload위에 문서에 있는 내용으로 hot-reload를 하면 entity 인식을 못하네요 이유인즉은위에 hot-reload를 하면 dist 경로에 main.js만 생성이 되더라고요. yarn build를 하면 entities 경로에 entity들이 .js 파일로 떨어지고요 그래서 여러가지 시도를 해봤는데 번번히 실패를 해서요 그래서 현재 entities를 명시적으로 쓰는 방법으로 하고 있습니다(아래와 같이) entities: [ ChannelChats, ChannelMembers, Channels, DMs, Mentions, Users, WorkspaceMembers, Workspaces, ], 혹시 entities를 경로로 설정하면서 hot-reload를 적용할 수 있는 방법이 있을까요?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
typeorm createQueryBuilder Boolean type 관련
안녕하십니까. 강의 정말 잘 듣고 있습니다.다름이 아니라 강사님의 강의를 듣고 연습을 하고 있습니다.maria db를 사용하고 있으며nestjs에서 entity에 @Column type은 bool로 선언했고 해당 db 컬럼도 tinyint(1)로 선언했습니다.하지만 createQueryBuilder로 select해보니 False는 0 True는 1이 나오던데 혹시 true 또는 False로 나오는 방법이 따로 있을까요?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
typeOrm connection Error 질문입니다.
위와 같이 Error: Access denied for user 'root'@'localhost' (using password: YES)라는 에러가 발생해서 찾아본 결과입니다.비밀번호 잘못 입력? -> 다시 입력해서 해보았으나 같은 결과https://github.com/ZeroCho/nodejs-book/issues/45 해당 부분을 참고 하였으나 같은 에러가 발생합니다.process.env를 인식 못하나? -> 직접 입력하여도 같은 에러가 발생하였습니다.cmd로 mysql, mysql 워크밴치 들어갈 때 이상 없이 들어갑니다.어떤 해결방법을 더 시도해 볼 수 있을까요? 알려주시면 감사하겠습니다.아래는 app.module 입니다.
- 해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
dotenv 관련 질문입니다.
env설정 관련 질문입니다. 위 사진은 ormconfig.ts입니다.위에서 dotenv를 import해왔는데 package.json을 보니 dotenv는 없었는데 어떻게 import했는지 궁금합니다.저의 경우 같은 방식으로 해보았으나 아래와 같은 에러가 나왔습니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
Nodejs Nestjs 채용
Nodejs + typescript, Nestjs + typescript 로 둘 다 프로젝트를 진행해봤는데nodejs랑 nestjs 중에 뭘 더 집중적으로 파야될지 고민되네요nestjs도 배워야된다고 어디서 들어서 nestjs도 배우고 프로젝트까지 진행해봤는데막상 둘 다 다룰 줄 아니 뭘 더 깊게 파야될지 모르겠네요(책 공부는 따로 시간을 내어 스터디로 꾸준히 하고있습니다)다음 프로젝트부터 nodejs로 구현해보면서 집중적으로 해보는게 맞을지nestjs로 구현하는게 맞을지 모르겠네요현재 4달 가까히 공부 했고 2년 뒤(군 문제 해결시기) 취업이 목표입니다
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
Cannot find module ' ./app.module '
영상따라서 공식문서를 따라서 작성을 다하고 npm run start:dev 를 치고 nest 가 동작을 하면 바로 Cannot find module ' ./app.module ' 에러가 나옵니다 분면dist 폴더 밑에 app.module.js 파일 또한 위치해 있는데 말이죠... 재설치를 해봐야 할까요?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
typeOrm DB 연결 오류입니다.
-> 오류 상황입니다... 이상하게 synchronize를 true로 해놓은 상태에서 npm run start 하면db에 테이블이 자동으로 생성됩니다. 이러면 db가 연결된거 아닌가요??허나 seed로 데이터를 보내려 하니 커넥션이 안됩니다typeorm 3버전 오류인거같은데, 2버전으로 다시 재설치하나요? 아니면 3버전으로 강의 계속 진행하나요?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
명령어로 sync 실행이 안됩니다 ㅜㅜ
강좌에 나오는 schema:sync를 입력했는데 Synchronizes your entities with database schema. It runs schema update queries on all connections you have. To run update queries on a concrete connection use -c option. 옵션: -h, --help 도움말 표시 [불리언] -d, --dataSource Path to the file where your DataSource instance is defined. [필수] -v, --version 버전 표시 [불리언] 필수 인수가 주어지지 않았습니다: dataSource이러한 문구가 계속 나옵니다.명령어로 sync를 하고싶은데 도와주세요 ㅠㅠ 구글링해도 나오질 않네요 제가 작성한 module은 다음과 같습니다.import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { Users } from './entities/Users'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true }), TypeOrmModule.forRootAsync({ inject: [ConfigService], useFactory: async (configService: ConfigService) => { return { type: 'mysql', host: configService.get('TEST') === 'true' ? configService.get('TEST_HOST') : configService.get('HOST'), port: configService.get('TEST') === 'true' ? configService.get('TEST_DB_PORT') : configService.get('DB_PORT'), username: configService.get('TEST') === 'true' ? configService.get('TEST_USER_NAME') : configService.get('USER_NAME'), password: configService.get('TEST') === 'true' ? configService.get('TEST_PASSWORD') : configService.get('PASSWORD'), database: configService.get('TEST') === 'true' ? configService.get('TEST_DATABASE') : configService.get('DATABASE'), entities: [Users], migrations: [__dirname + '/src/migarions/*.ts'], cli: { migrationsDir: 'src/migrations' }, charset: 'utf8mb4', synchronize: false, autoLoadEntities: true, keepConnectionAlive: true, logging: true, }; }, }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
- 해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
개발자 커리어 관련 개인적인 질문입니다
제로초님은 학부생시절에 하루 몇 시간 정도 프로젝트, CS지식, 코테, 인프라 등에 투자하셨나용 현재 스터디 + 개인 공부 등으로 3달동안 7~9 시간 정도 투자하고있는데스터디하면서 효율은 나쁘게 하시는거 같지만 저만큼 시간 투자하시는 분도 봤고이 사람 뭐지 싶을 정도로 똑똑하신 분도 봤습니다(cs 스터디를 정해진 시간동안 책을 보고 Q&A를 하는데 같은 시간동안 본게 맞나 싶을 정도로 대답을 잘하더군요)분명 시간을 크게 투자하면서 효율적이고 똑똑하신 분이 꽤나 많을 거라는 생각이 듭니다스터디원들을 모집해 협업 프로젝트, cs 스터디 , 코테 스터디 하며새로초님이 말하셨던 방식처럼 1교시, 2교시, 3교시 나눠서 평일엔 백앤드 공부 4시간, 코테 공부 2시간, cs 공부 2시간, 기타 공부(그날 공부하고싶은거) 2시간(주로 리액트)씩 규칙적으로 공부하고 주말은 쭉 쉬는 식으로 해왔고이 정도면 2년 뒤(군 문제[공익] 해결 시기)에는 당연히 대기업(네카라쿠배당토직야 등)에 지원할 정도가 되겠거니 하면서 별 걱정 없이 공부하고 있었는데스터디 하다보니 저런 두 케이스(효율 나쁘게 공부하지만 시간을 엄청 투자하시는분, 그냥 똑똑하신 분)를 보게되고 시간을 더 투자해야될까 하는 근심이 좀 생겨 질문 드렸습니다제가 극심한 효율충이라 목표를 정하고 딱 목표만큼만 노력하려는 경향이 좀 있습니다