44,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
함수 내 리턴 방법을 어떻게 할지 모르곘습니다.
안녕하세요 프로젝트 진행 중에 방법을 못 찾아서 질문 올립니다. aws Dynamo DB를 연결 중입니다. express로 연결 할 때는 res.status(200).json()으로 데이터를 리턴했는데 네스트 서비스단에서 어떻게 값을 리턴할 지 방법을 여러모로 찾아봤는데 방법을 모르겠네요 익스프레스에서 값 리턴할 때는 아래와 같습니다. res.status(200).json(data.Items) 형태로 값 리턴을 했습니다. 네스트에서는 onScan function 내에서 리턴할 때 express와 같이 res 방법으로 리턴을 해야할 거 같은데 서비스에서는 결합이 커져서 res를 되도록 쓰지 않는게 좋다고 해서 다른 방법을 찾아봤는데 방법을 찾을 수가 없네요.. 혹시 이 문제에 대해 방법을 제시해 주실 수 있을까요? ㅠㅠ
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
jwt를 공부중에 궁금한것이 있어 질문합니다.
안녕하세요 강의 수강 후 nest.js홈페이지의 로그인 구현을 따라하던 중, jwt로 구현이 되있어 궁금증이 생겨 질문 남깁니다! access token의 시간이 만료되었을때 refresh token을 이용하는데 , 보안을 위해 refresh token을 서버사이드에 저장하는것이 좋고, db에 저장해야 한다는 블로그 글들을 많이 봤습니다. 이렇게 되면, session을 대신하고, 확장성을 위해 jwt를 사용하는 의미가 줄어들지 않나 궁금합니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
Workspace 관리자 관계 지정 질문
Entity를 보니 Workspace 관리자 필드가 OwnerId인 것 같더라구요! Typeorm 공식문서를 참고했을때 @OnetoOne 데코레이터와 @Jointable 데코레이터만 사용해 1:1 관계를 구현했었는데 따로 @Column 데코레이터로 OwnerId를 또 만드신 이유가 있을까요?? 공식문서 참고해서 코드 짰을 때 에러가 떴는데 제로초님 코드 처럼 변경하니 해결돼서 차이가 궁금합니다!
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
실무에서 마이그레이션
안녕하세요! 혹시 실례가 되지 않는다면 답변 부탁드립니다! 회사에서 typeorm module config를 작성할때 ormconfig.ts 파일을 안빼신다고 하셨는데 혹시 현영님 회사에서는 마이그레이션은 typeorm cli를 사용하지 않으신가요???
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
소켓
강의 내용 다른것은 이제 이해가 되는데 , 소켓에 대한 이해가 부족한것 같아서 소켓구현을 해볼려고하는데여 . 프론트없이는 할수가 없나여 ?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
인터셉터 안에 this 바인딩
안녕하세요 강의 잘 듣고 있습니다. 인터셉터 안에 this를 사용하고 싶으면 바인딩을 어떤 방식으로 하는 것이 좋은지 조언을 구하고 싶습니다. 감사합니다
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
강의 내용과는 별개로 질문이 있습니다
다른건 아니구요. 폰트는 어떤걸 쓰시는지 궁금합니다^^ 강의는 잘 보고있습니다
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
user 세션 serialize 문제 질문
[Nest] 25160 - 2021. 09. 28. 오후 10:32:34 ERROR [ExceptionsHandler] Failed to serialize user into session 강의보는 도중에 나왔던 동일한 에러가 나와서 동일한 방법으로, auth.service.ts 파일에 validateUser() 에서 select에 'id'를 추가 하였습니다. 그렇게 했는데도 동일한 에러가 발생해서 user 값을 제대로 받아오는지 확인 하기 위해 console.log를 통해 확인해본 결과 정상적으로 select 한 값들(id, email, password, nickname)을 받아온 것을 확인하였습니다. 그래서 serializer가 제대로 등록되지 않았나 확인하기 위해github에 있는 sleact를 다운받아auth 폴더의< auth.module.ts, auth.service.ts, local-auth.guard.ts, localserializer.ts, local.strategy.ts>app.modules.tsapp.service.tsmain.ts 등을 확인하고 serialize가 들어 가는 내용을 검색해 보았으나 모두 동일하게 등록되어 있음을 확인하였습니다. 이 상황에서 제가 어느 부분을 중점적으로 살펴 보아야 할지 감이 오지 않아 여쭤보게되었습니다.에러 문구 : [Nest] 25160 - 2021. 09. 28. 오후 10:32:34 ERROR [ExceptionsHandler] Failed to serialize user into session Error: Failed to serialize user into session at pass (D:\Slack\nest\dist\main.js:14933:19) at Authenticator.serializeUser (D:\Slack\nest\dist\main.js:14951:5) at SessionManager.logIn (D:\Slack\nest\dist\main.js:15239:8) at IncomingMessage.req.login.req.logIn (D:\Slack\nest\node_modules\passport\lib\http\request.js:50:33) at D:\Slack\nest\dist\main.js:13559:64 at new Promise (<anonymous>) at LocalAuthGuard.<anonymous> (D:\Slack\nest\dist\main.js:13559:23) at Generator.next (<anonymous>) at D:\Slack\nest\dist\main.js:13516:71 at new Promise (<anonymous>)[Nest] 25160 - 2021. 09. 28. 오후 10:32:34 ERROR [ExceptionsHandler] Failed to serialize user into session Error: Failed to serialize user into session at pass (D:\Slack\nest\dist\main.js:14933:19) at Authenticator.serializeUser (D:\Slack\nest\dist\main.js:14951:5) at SessionManager.logIn (D:\Slack\nest\dist\main.js:15239:8) at IncomingMessage.req.login.req.logIn (D:\Slack\nest\node_modules\passport\lib\http\request.js:50:33) at D:\Slack\nest\dist\main.js:13559:64 at new Promise (<anonymous>) at LocalAuthGuard.<anonymous> (D:\Slack\nest\dist\main.js:13559:23) at Generator.next (<anonymous>) at D:\Slack\nest\dist\main.js:13516:71 at new Promise (<anonymous>) -----------D:\Slack\nest\dist\main.js:14933:19)------- Authenticator.prototype.serializeUser = function(fn, req, done) { if (typeof fn === 'function') { return this._serializers.push(fn); } // private implementation that traverses the chain of serializers, attempting // to serialize a user var user = fn; // For backwards compatibility if (typeof req === 'function') { done = req; req = undefined; } var stack = this._serializers; (function pass(i, err, obj) { // serializers use 'pass' as an error to skip processing if ('pass' === err) { err = undefined; } // an error or serialized object was obtained, done if (err || obj || obj === 0) { return done(err, obj); } var layer = stack[i]; if (!layer) { return done(new Error('Failed to serialize user into session')); } function serialized(e, o) { pass(i + 1, e, o); } try { var arity = layer.length; if (arity == 3) { layer(req, user, serialized); } else { layer(user, serialized); } } catch(e) { return done(e); } })(0); }; ---------------------auth.service.ts ------------------- import { Injectable } from "../../node_modules/@nestjs/common"; import bcryptjs from '../../node_modules/bcryptjs' import { Repository } from "typeorm"; import { Users } from "src/entities/Users"; import { InjectRepository } from "@nestjs/typeorm"; @Injectable() export class AuthService { constructor( @InjectRepository (Users) private usersRepository: Repository<Users>, ) {} async validateUser(email: string, password: string){ const user = await this.usersRepository.findOne({ where: {email}, select:['id', 'email', 'password', 'nickname'], }) console.log(user); if(!user){ return null; } const result = await bcryptjs.compare(password, user.password); console.log(result); if(result){ const {password, ...userWithoutPassword} = user; return userWithoutPassword; } return null; } }
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
TypeError: Cannot read property 'passport' of undefined
강사님 소스랑 똑같이 따라쳤는데 제목과 같은 에러가 납니다. TypeError: Cannot read property 'passport' of undefined at SessionStrategy.authenticate (D:\z3-develope\slack-socket\backend\node_modules\passport\lib\strategies\session.js:51:18) at attempt (D:\z3-develope\slack-socket\backend\node_modules\passport\lib\middleware\authenticate.js:360:16) at authenticate (D:\z3-develope\slack-socket\backend\node_modules\passport\lib\middleware\authenticate.js:361:7) at Layer.handle [as handle_request] (D:\z3-develope\slack-socket\backend\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (D:\z3-develope\slack-socket\backend\node_modules\express\lib\router\index.js:317:13) at D:\z3-develope\slack-socket\backend\node_modules\express\lib\router\index.js:284:7 at Function.process_params (D:\z3-develope\slack-socket\backend\node_modules\express\lib\router\index.js:335:12) at next (D:\z3-develope\slack-socket\backend\node_modules\express\lib\router\index.js:275:10) at initialize (D:\z3-develope\slack-socket\backend\node_modules\passport\lib\middleware\initialize.js:66:5) at Layer.handle [as handle_request] (D:\z3-develope\slack-socket\backend\node_modules\express\lib\router\layer.js:95:5) 패스포트를 못읽어오는거 같은데 네스트 버그인가요? 저와같은 에러 나오시는분 계신가요? 이게 처음부터 이 에러가 아니라 아마, 저 에러로 인해서 UnhandledPromiseRejectionWarning: TypeError: exception.getStatus is not a function at HttpExceptionFilter.catch (D:\z3-develope\slack-socket\backend\dist\main.js:2211:34) at ExceptionsHandler.invokeCustomFilters (D:\z3-develope\slack-socket\backend\node_modules\@nestjs\core\exceptions\exceptions-handler.js:33:26) at ExceptionsHandler.next (D:\z3-develope\slack-socket\backend\node_modules\@nestjs\core\exceptions\exceptions-handler.js:13:18) at D:\z3-develope\slack-socket\backend\node_modules\@nestjs\core\router\router-proxy.js:24:35 at Layer.handle_error (D:\z3-develope\slack-socket\backend\node_modules\express\lib\router\layer.js:71:5) at trim_prefix (D:\z3-develope\slack-socket\backend\node_modules\express\lib\router\index.js:315:13) at D:\z3-develope\slack-socket\backend\node_modules\express\lib\router\index.js:284:7 at Function.process_params (D:\z3-develope\slack-socket\backend\node_modules\express\lib\router\index.js:335:12) at next (D:\z3-develope\slack-socket\backend\node_modules\express\lib\router\index.js:275:10) at Layer.handle_error (D:\z3-develope\slack-socket\backend\node_modules\express\lib\router\layer.js:67:12) 이 에러가 나는데 에러이셉션에서 에러를 가로채올때 이 에러같은 경우에는 스테이스를 가져올 수 없기때문에 바로 위 에러가 먼저나오고, 이셉션에서 에러 찍으면 제일 위에 있는 에러가 나옵니다. 내일 다시 해볼생각이긴 하지만 혹시 먼저 경험해보신분 계시면 해결방법 공유 부탁드립니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
배포 npm run start
ubuntu@ip-111-11-11-104:~/minsu-code/back$ npm start > back@0.0.1 start /home/ubuntu/minsu-code/back > nest start [Nest] 22759 - 09/26/2021, 7:30:56 AM LOG [NestFactory] Starting Nest application... [Nest] 22759 - 09/26/2021, 7:30:56 AM LOG [InstanceLoader] TypeOrmModule dependencies initialized +340ms [Nest] 22759 - 09/26/2021, 7:30:56 AM LOG [InstanceLoader] PassportModule dependencies initialized +0ms [Nest] 22759 - 09/26/2021, 7:30:56 AM LOG [InstanceLoader] EventsModule dependencies initialized +1ms [Nest] 22759 - 09/26/2021, 7:30:56 AM LOG [InstanceLoader] ConfigHostModule dependencies initialized +0ms [Nest] 22759 - 09/26/2021, 7:30:56 AM LOG [InstanceLoader] AppModule dependencies initialized +1ms [Nest] 22759 - 09/26/2021, 7:30:56 AM LOG [InstanceLoader] ConfigModule dependencies initialized +1ms [Nest] 22759 - 09/26/2021, 7:30:57 AM ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)... Error: Unknown database 'minsucode' 말 그대로 database 가 없다는 뜻인데. 우분투 말고 로컬 윈도우에서 npm run start 하면 잘 되는데. 배포모드 우분트 환경에서만 npm run start 하면 저런 에러가 나옵니다. mysql안에 db도 만들어 주었고 우분투 환경에서 mysql 설치 해주고. .env 파일도 만들어서 필요한 것들 다 입력 해줬는데 계속 저런 에러가 나옵니다 ㅠㅠ
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
broadcast를 사용하지않고 모든 소켓들에게 데이터를 전송할 수 있나요?
어떤 이벤트가 왔을 때 연결되어 있는 모든 소켓들에게 데이터를 emit할 수 있는 방법중 하나가 broadcast인데 broadcast같은 경우 모든 소켓들에게 똑같은 데이터를 줘야하는데 만약 각 소켓들에게 조금씩 다른 데이터를 줘야한다면 broadcast말고 어떤걸 사용해야하나요? 물론 각 소켓이 개별적으로 서버에게 요청해서 받는 방법이 있겠지만 요청 하나만 왔을 때 모든 소켓들에게 데이터를 전송할 수 잇는 방법이 있나요?
- 해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
nodebird express clone
공부삼아 혼자서 이것저것 clone 을 하고있는데여 hashtag 부분에서 typeorm 에서는 findOrCreate 가 없는것 같은데 무슨 메서드를 사용해야할까요 ?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
회원 가입 프로세스 관련 질문
안녕하세요. 회원가입 관련하여 질문드립니다. 어느 부분을 살펴봐야 할지 조언 부탁드립니다. 회원가입 API(join)로 POSTMAN을 사용하여 POST를 했을 때 아무것도 입력하지 않고 POST를 했을 경우 "이메일을 입력해주세요." , STATUSCODE : '설정한값' 이런식으로 응답이 정상적으로 받아집니다. 그런데, POSTMAN에서 {"email":"nak512@naver.com"} 입력하여 POST 했을 경우에도 동일하게 "이메일을 입력해주세요." , STATUSCODE : '설정한값' 이런식으로 응답이 옵니다. POSTMAN에서 POST한 값들을 을 정상적으로 받아오나 출력을 해보니 제대로 값을 받아오지 못해 모두 빈값으로 들어 오더라구요. 모듈 -> 컨트롤러 -> 서비스 이런식으로 연결된다는 말씀을 듣고 살펴보아도 잘모르겠습니다. 자세한 코드를 올리지 않아 디테일한 조언을 해주시긴 어렵겠지만, 어떤식으로 접근 해봐라 정도로 조언이 가능하실까요? 읽어주셔서 감사합니다. [제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
탈퇴 관련 질문입니다
안녕하세요. 현재 entities 의 user를 확인해보면 @DeleteDateColumn 을 활용해서 회원 탈퇴시에 해당 deletedAt에 기록을 하기 위해 구성을 하신것으로 생각이 되는데 이에따라 제로초님께서는 어떠한 방식으로 탈퇴를 구성하시나요? sequelize에서는 paranoid 옵션으로 탈퇴처리시에 자동으로 delted를 하더라도 soft-delete 형식으로 구성이 되서 deletedAt에 기록이 남던것으로 확인되는데 typeorm에서는 탈퇴 처리시에 어떠한 옵션이 있을까요? 지금 생각나는 방식은 탈퇴 요청 -> typeorm에서 update를 통해 deletedAt에 NOW() 데이터 삽입 -> 추후 데이터 가져올 때 deletedAt가 NULL이 아닌 정보를 가져와야한다 라는 생각이 드는데 위와같이 구성 할 경우 모든 유저 처리마다 deletedAt이 NULL이 아닌 정보를 가져와야할거같은데 (혹은 인터셉터등을 활용해서 deletedAt에 데이터가 있으면 탈퇴된 회원처리를 하거나...? 라는 생각정도 드네요) typeorm에서는 sequelize의 paranoid 옵션처럼 soft-delete를 보조해주는 옵션들이 있을까요~? 혹은 사용하실떄 어떠한 방식으로 구성하시는지 궁금증이 들어 질문 남겨봅니다. 질문 읽어주셔서 감사합니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
repository 와 get repository
repository 를 사용했을때와 getrepository 를 사용해서 querybuilder 를 사용해 봤는데 두개의 차이점과 어떨때 사용하면 .. 되는걸까요 ?? getRepository 내부에 들어가보니깐 이렇게 작성되어 있었구요 . Repository 내부를 보니깐 이렇게 나와있었어여 . getRepository 에서도 결국엔 return 으로 Repository 를 return 하게되는데 무슨 차이가 있을까요 ?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
Type Orm Transaction
안녕하세요 트랜잭션 관련해서 문의드립니다. querry runner를 이용해서 트랜잭션을 사용하였습니다. 콘솔 창에 트랜잭션이 제대로 작동하는 확인하고 확인차 중간에 오류를 만들었지만 상위 프로세스는 작동하여 데이터 베이스에 저장되었습니다. 혹시 저의 방법이 잘못되었는지 확이 해주세요...
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
명명규칙
안녕하세요 ? spring개발자에서 처음 nestjs를 처음 쓰고 있는데 spring같은 경우에 클래스 파일은 대문자로 명명규칙으로 정하고 있는데 nestjs에서 파일명에 대한 명명규칙이 따로 정해져 있는건가요?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
Eventsgateway 인스턴스 다중으로 생성
안녕하세요 제로초님 강좌를 통해서 서비스 개발에 접목시키면서 정말 많은 도움 얻고 있고 너무 많이 배우고 있습니다. 일단 감사 말씀 먼저 드립니다 :) 제가 올려주신 코드와 거의 비슷한 구조로 채팅 기능을 구현중에 있는데요. 구현 중에 채팅 기능이 잘 동작하지 않아서 나름대로 해결법을 찾았는데 아마 이 부분은 저만 겪는 이슈가 아닐 듯 하여 글 남겨 봅니다. - 현상 : socket연결 정상, 'onlineList' 이벤트까지는 client에서 잘 받아오고 있으나 dm을 보내보면 client로 event가 전달되지 않는 현상입니다. 혹시 onlineMap에 제대로 리스트업이 되지 않은 것인가 싶어 로그를 찍어봐도 onlineMap까지는 각각의 socketid정보가 잘 등록되어 있었습니다. - 해결 : 제가 추측한 원인은 dm module, channel module에서 EventsGateway를 provider로 가져다 쓰고 있어서 이 때 별도로 instance화되고 이 것이 client와 연결되어있는 EventsGateway와 별개로 동작하면서 socket통신이 이루어지지 않은것으로 판단했습니다. @Module({ imports: [TypeOrmModule.forFeature([DMs, Users, Workspaces])], controllers: [DMsController], providers: [DMsService, EventsGateway], }) export class DMsModule {} ( 로그 상 eventsgateway의 init로그가 gateway를 provider로 등록한 module수(app, dm, channel) 만큼 찍힘) [Nest] 68842 - 2021. 09. 08. 오후 5:06:46 LOG [InstanceLoader] WorkspacesModule dependencies initialized +0ms [Nest] 68842 - 2021. 09. 08. 오후 5:06:46 LOG [InstanceLoader] UsersModule dependencies initialized +0ms [Nest] 68842 - 2021. 09. 08. 오후 5:06:46 LOG [InstanceLoader] ChannelsModule dependencies initialized +1ms [Nest] 68842 - 2021. 09. 08. 오후 5:06:46 LOG [InstanceLoader] DMsModule dependencies initialized +0ms init init init [Nest] 68842 - 2021. 09. 08. 오후 5:06:46 LOG [RoutesResolver] AppController {/}: +83ms [Nest] 68842 - 2021. 09. 08. 오후 5:06:46 LOG [RouterExplorer] Mapped {/, GET} route +1ms [Nest] 68842 - 2021. 09. 08. 오후 5:06:46 LOG [RoutesResolver] UsersController {/api/users}: +0ms [Nest] 68842 - 2021. 09. 08. 오후 5:06:46 LOG [RouterExplorer] Mapped {/api/users, GET} route +0ms 그래서 gateway를 직접 provider로 등록하는 방식이 아닌 EventsModule에서 gateway를 export하고 필요한 곳에서 EventsModule을 가져다 쓰는 방식으로 변경했더니 해결 되었습니다. //events.module.ts @Module({ providers: [EventsGateway], exports: [EventsGateway], }) export class EventsModule {} //chat.module.ts @Module({ imports: [TypeOrmModule.forFeature([User, Chat, Room]), EventsModule], controllers: [ChatController], providers: [ChatService], exports: [ChatService], }) export class ChatModule {} 아직 nestjs 초보라서 맞는지 확신까지는 들지 않는데 어쨌든 해결된 버전이어서 공유 드립니다. 혹시 위와 같이 처리하면 문제가 있거나 제가 뭔가 잘못 셋팅하여 발생한 이슈였을지 모르겠네요. 보시면 검토 한번 해주시면 감사하겠습니다 그럼 좋은 하루 되세요 :)
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
서비스 부분 test 도와주세요....
[제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.서비스의 코드는 이렇습니다. MockuserRepository에 save를 어떻게 해야할지 감이 오지 않습니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
코드 해석문의
3:28초에 exception.getResponse() as | string | { error: string; statusCode: 400; message: string[] }; 이 부분에서 exception.getResponse()의 타입이 string이거나 { error: string; statusCode: 400; message: string[] }이거이거가 될수있다라는 의미로 이해를 했는데, cast를 이렇게 하는 이유가 궁금합니다.