묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
유닛테스트 도중 'findByEmail' 의 함수를 못찾고 있습니다.
문제점: 제목 그대로 유닛테스트 도중 'findByEmail' 의 함수를 못찾고 있습니다.<에러발생 사진><제 코드>users.service.spec.tsusers.service.ts추가질문 : 추가 질문으로 위로 올려 보시면 users.Service.spec.ts에서 두번째 사진중 빨간네모박스 체크를 했는데 기존 UsersServie 코드로 하면 모듈에서 인식을 못하는지 아래와 같은 에러가 떴습니다. 이거 다른해결 방법이 있나요?< 모듈 사진추가>users.module.tsapp.module.ts
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
mysql 설치는 윈도우에 대해서만 해주는 것인가요?
해당 강좌는 윈도우 기반인가요?설치에 대해서 윈도우만 설명하고 있어서 글을 적어보았습니다.
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
seeder is not a constructor
yarn seed를 통해 더미데이터를 생성하려 했으나 "seeder is not a constructor" 라는 에러에 마주칩니다. 어느 부분이 잘못됫는지 알아보기 위해 에러코드를 살펴봤으나 제 코드 부분이 아닌 typeorm-extension 부분에서 에러가 나는것 같아 해결하기 어렵습니다.TypeError: seeder is not a constructor at /Users/jinyoung/Desktop/try-own-version/practice-version/node_modules/typeorm-extension/src/seeder/module.ts:122:19 at Generator.next (<anonymous>) at fulfilled (/Users/jinyoung/Desktop/try-own-version/practice-version/node_modules/typeorm-extension/dist/seeder/module.js:5:58) dataSource.ts import dotenv from 'dotenv'; //dataSource에 entity를 입력해줄때는 절대경로면 못찾아온다. 그래서 상대 경로로 써줘야함 import { User } from './src/users/entities/user.entity'; import { DataSource } from 'typeorm'; const mode = process.env.NODE_ENV || 'development'; dotenv.config({ path: process.cwd() + `/.env.${mode}` }); const dataSource = new DataSource({ type: 'mysql', host: 'localhost', port: 3306, database: process.env.DB_DATABASE, username: process.env.DB_USERNAME, password: process.env.DB_PASSWORD, charset: 'utf8mb4_general_ci', entities: [User], migrations: [__dirname + '/src/migrations/*.ts'], synchronize: true, logging: true, }); export default dataSource; package.json seed부분 설정 "seed": "ts-node ./node_modules/typeorm-extension/dist/cli/index.js seed -d ./dataSource.ts" database/seeds/create-initial-data.ts import { User } from '../../users/entities/user.entity'; import { DataSource } from 'typeorm'; import { Seeder, SeederFactoryManager } from 'typeorm-extension'; export class UserSeeder implements Seeder { async run( dataSource: DataSource, factoryManager: SeederFactoryManager, ): Promise<any> { const userRepository = dataSource.getRepository(User); await userRepository.save({ email: 'ggg@gmail.com', firstName: 'sfvs', lastName: 'wdwdwd', nickname: 'hihi', }); } } typeorm-extension 버젼 "typeorm-extension": "^2.4.2", "typeorm": "^0.3.12", 시도해본 내용1. dataSource 생성시 new DataSource({... 중략seed:["create-initial-data.ts 경로"] 추가})2. db 삭제후 다시 생성(생성시 테이블 싱크까지 맞춘후 seed 시도)3. typeorm-extension 버전 문제일까 해서 다운그레이드 시도4. typeorm 0.3대는 유지하고 0.3.11, 0.3.10등 다른 버전으로 시도결과 모두 실패
-
미해결따라하며 배우는 NestJS
강의자료 다운로드 관련
안녕하세요! 강의 잘 듣고 있는 수강생입니다.강의자료 다운 받으면 pdf, xml 모두 폴더가 비어 있습니다.(DS_store 파일만 있어서요..)혹시 제가 모르는 부분이 있으면 알려주시면 감사하겠습니다!
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
TypeOrm @CreateDateColumn() 질문
DB에 Insert 하려고 할 때 TypeOrm에서 Default 값을 넣어주지 않아 에러가 발생했습니다.(CreatedAt, UpdatedAt 컬럼) 그래서 처음에는 Database에서 Table에 Default값을 세팅하고 사용했는데요.어떤 분이 질문 하신걸 보고 다시 수정해 보는 중입니다.강의에 있는 소스는 @Column("datetime", { name: "createdAt", default: () => "CURRENT_TIMESTAMP"}) ...이렇게 적혀있더군요.근데 Github의 소스에는@CreateDateColumn()createdAt: Data;로만 적혀있었습니다. 그리고 @CreatedDateColumn()은 Special Column이라고 아래와 같이 설명이 있던데요.@CreateDateColumn is a special column that is automatically set to the entity's insertion date. You don't need to set this column - it will be automatically set.저는 이 얘기를 TypeOrm에서 자동으로 입력해 주는 값으로 이해했는데... 막상 해보면 안되더라고요. 그래서... 만약 Github의 소스와 같이@CreateDateColumn... 으로 사용하려면 Database에서 Default값을 설정해주어야 하는지(그렇다면 @CreateDateColumn..은 자동 세팅되는 것이 아니겠죠...)아니면 영상 강의 상처럼... default() => "CURRENT_TIMESTAMPT"... 로 사용해야 할지요(물론 영상 강의의 소스는 Database에 그렇게 설정되어 있으니 그렇게 나온것이겠지만요..)
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
안녕하세요. jest관련해서 질문드립니다.
현재 강의에 목업으로 된 테스트 코드가 작성되어져 있는걸 봤는데요실제 DB에다가 테스트를 하려고 이것저것 해봤는데 잘 안되더라구요;;error: Nest can't resolve dependencies of the ~~ 하면서 에러가 나오고아마 서비스 쪽에 주입된 레파지토리 때문일 것 같은데목업이 아닌 실제 db에 테스트코드를 돌리기 위해서는 어떤 작업이 필요한 지 질문드립니다.
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
logger.middleware.ts 가 app.module에 적용이 되질않아서 질문드립니다.
제목과 동일한 내용으로 logger middleware를 작성하고 app module에 적용하였습니다. 그리고 재시작을 하여 적용 여부를 확인하려 했으나 적용이 되지않은것을 확인했습니다. 어떤부분을 놓치고 있는지 알고싶습니다. package.json { "name": "a-nest", "version": "0.0.1", "description": "", "author": "", "private": true, "license": "UNLICENSED", "scripts": { "prebuild": "rimraf dist", "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start": "nest start", "start:dev-backup": "nest start --watch", "start:dev": "nest build --webpack --webpackPath webpack-hmr.config.js --watch", "start:debug": "nest start --debug --watch", "start:prod": "node dist/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "test": "jest", "test:watch": "jest --watch", "test:cov": "jest --coverage", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:e2e": "jest --config ./test/jest-e2e.json" }, "dependencies": { "@nestjs/common": "^9.0.0", "@nestjs/config": "^2.3.0", "@nestjs/core": "^9.0.0", "@nestjs/platform-express": "^9.0.0", "axios": "^1.3.2", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "rxjs": "^7.2.0" }, "devDependencies": { "@nestjs/cli": "^9.0.0", "@nestjs/schematics": "^9.0.0", "@nestjs/testing": "^9.0.0", "@types/express": "^4.17.13", "@types/jest": "28.1.8", "@types/node": "^16.0.0", "@types/supertest": "^2.0.11", "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", "eslint": "^8.0.1", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^4.0.0", "jest": "28.1.3", "prettier": "^2.3.2", "run-script-webpack-plugin": "^0.1.1", "source-map-support": "^0.5.20", "supertest": "^6.1.3", "ts-jest": "28.0.8", "ts-loader": "^9.2.3", "ts-node": "^10.0.0", "tsconfig-paths": "4.1.0", "typescript": "^4.7.4", "webpack": "^5.75.0", "webpack-node-externals": "^3.0.0" }, "jest": { "moduleFileExtensions": [ "js", "json", "ts" ], "rootDir": "src", "testRegex": ".*\\.spec\\.ts$", "transform": { "^.+\\.(t|j)s$": "ts-jest" }, "collectCoverageFrom": [ "**/*.(t|j)s" ], "coverageDirectory": "../coverage", "testEnvironment": "node" } } logger.middleware.ts import { Injectable, Logger, NestMiddleware } from '@nestjs/common'; import { NextFunction, Request, Response, response } from 'express'; @Injectable() export class LoggerMiddleware implements NestMiddleware { private logger = new Logger('HTTP'); use(req: Request, res: Response, next: NextFunction): void { const { ip, method, originalUrl } = req; const userAgent = req.get('user-agent') || ''; response.on('finish', () => { const { statusCode } = res; const contentLength = res.get('content-type'); this.logger.log( `${method} ${originalUrl} ${statusCode} ${contentLength} - ${userAgent} ${ip}`, ); }); next(); } } app.module.ts import { MiddlewareConsumer, Module, NestModule, RequestMethod, } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { ConfigModule, ConfigService } from '@nestjs/config'; import axios from 'axios'; import { LoggerMiddleware } from './middleware/logger.middleware'; const getEnv = async () => { // const response = await axios.get('비밀키를 요청하는 url'); // return response.data; }; const mode = process.env.NODE_ENV || 'development'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, load: [getEnv], envFilePath: `.env.${mode}`, }), ], controllers: [AppController], providers: [AppService, ConfigService], }) export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer): any { consumer .apply(LoggerMiddleware) .forRoutes({ path: '*', method: RequestMethod.ALL }); } } nestjs log Info Webpack is building your sources... Entrypoint main 47.9 KiB = main.js 46.1 KiB 0.5051cca5f9ad96919687.hot-update.js 1.81 KiB webpack 5.75.0 compiled successfully in 63 ms [Nest] 36670 - 02/07/2023, 7:47:49 AM LOG [NestFactory] Starting Nest application... +6659ms [HMR] Updated modules: [HMR] - 10 [HMR] - 5 [HMR] - 3 [HMR] Update applied. [Nest] 36670 - 02/07/2023, 7:47:49 AM LOG [InstanceLoader] ConfigHostModule dependencies initialized +4ms [Nest] 36670 - 02/07/2023, 7:47:49 AM LOG [InstanceLoader] ConfigModule dependencies initialized +0ms [Nest] 36670 - 02/07/2023, 7:47:49 AM LOG [InstanceLoader] AppModule dependencies initialized +0ms [Nest] 36670 - 02/07/2023, 7:47:49 AM LOG [RoutesResolver] AppController {/}: +0ms [Nest] 36670 - 02/07/2023, 7:47:49 AM LOG [RouterExplorer] Mapped {/, GET} route +1ms [Nest] 36670 - 02/07/2023, 7:47:49 AM LOG [NestApplication] Nest application successfully started +0ms적용이 되지않아 생기는 질문이라 에러코드는 없어서 따로 첨부하지 않았습니다.
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
@nestjs/core의 import 문제
우선 잘 되는것이 갑자기 안되는데 해결이 안되서 질문을 올립니다. 우선 제가 한 작업은 다음과 같습니다.7강의 typeorm 커넥션 맺기까지 완료 한 후 nest g res {service name}을 실행하여 테스트 했습니다폴더가 생기면서 service, module, controller가 생기는것을 확인 한 후 삭제했습니다.이후 yarn start:dev를 실행하면 아래와 같이 에러가 났습니다. yarn run v1.22.19warning ..\package.json: No license field$ nest build --webpack --webpackPath webpack-hmr.config.js --watchInfo Webpack is building your sources...ERROR in ./src/main.ts:1:29TS2307: Cannot find module '@nestjs/core' or its corresponding type declarations.> 1 | import { NestFactory } from '@nestjs/core';| ^^^^^^^^^^^^^^2 | import { DocumentBuilder } from '@nestjs/swagger';3 | import { SwaggerModule } from '@nestjs/swagger/dist';4 | import { AppModule } from './app.module';webpack 5.75.0 compiled with 1 error in 3426 msE:\web-message\dist\main.js:1834/******/ throw e;^Error: Cannot find module '@nestjs/core'Require stack:- E:\web-message\dist\main.jsat Module._resolveFilename (node:internal/modules/cjs/loader:1039:15)at Module._load (node:internal/modules/cjs/loader:885:27)at Module.require (node:internal/modules/cjs/loader:1105:19)at require (node:internal/modules/cjs/helpers:103:18)at Object.<anonymous> (E:\web-message\dist\main.js:196:18)at __webpack_require__ (E:\web-message\dist\main.js:1831:33)at fn (E:\web-message\dist\main.js:1938:21)at Object.<anonymous> (E:\web-message\dist\main.js:166:16)at __webpack_require__ (E:\web-message\dist\main.js:1831:33)at E:\web-message\dist\main.js:2757:37 {code: 'MODULE_NOT_FOUND',requireStack: [ 'E:\\web-message\\dist\\main.js' ]}Node.js v18.13.0우선 warning ..\package.json: No license field 이 부분을 해결하기 위해 찾아보니..package.json의 private: true를 설정해 주라고 했지만, 이미 되어 있기 때문에 해결을 못했습니다. 그 다음ERROR in ./src/main.ts:1:29TS2307: Cannot find module '@nestjs/core' or its corresponding type declarations.> 1 | import { NestFactory } from '@nestjs/core';이 부분을 해결해 보기 위해 다음과 같은 작업을 했습니다.@nestjs/core의 삭제 및 재설치node_modules 폴더 삭제 및 재설치nestjs/core와 swagger의 충돌 문제가 있다는 얘기에 nestjs/core를 9.0.0으로 nestjs/common을 9.0.0으로, nestjs/platform-express를 9.0.0으로 수정하여 재설치 했으나 여전히 동일한 문제 발생 아래는 현재 저의 package.json입니다{ "name": "web-message", "version": "0.0.1", "private": true, "description": "", "author": "", "license": "UNLICENSED", "scripts": { "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start": "nest start", "start:dev-backup": "nest start --watch", "start:dev": "nest build --webpack --webpackPath webpack-hmr.config.js --watch", "start:debug": "nest start --debug --watch", "start:prod": "node dist/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "test": "jest", "test:watch": "jest --watch", "test:cov": "jest --coverage", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:e2e": "jest --config ./test/jest-e2e.json" }, "dependencies": { "@nestjs/common": "^9.3.2", "@nestjs/config": "^2.3.0", "@nestjs/core": "^9.3.2", "@nestjs/platform-express": "^9.0.0", "@nestjs/swagger": "^6.1.4", "@nestjs/typeorm": "^9.0.1", "mariadb": "^3.0.2", "reflect-metadata": "^0.1.13", "rxjs": "^7.2.0", "swagger-ui-express": "^4.6.0", "typeorm": "^0.3.11", "typeorm-extension": "^2.4.2" }, "devDependencies": { "@nestjs/cli": "^9.0.0", "@nestjs/schematics": "^9.0.0", "@nestjs/testing": "^9.0.0", "@types/express": "^4.17.13", "@types/jest": "29.2.4", "@types/node": "18.11.18", "@types/supertest": "^2.0.11", "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", "eslint": "^8.0.1", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^4.0.0", "jest": "29.3.1", "prettier": "^2.3.2", "run-script-webpack-plugin": "^0.1.1", "source-map-support": "^0.5.20", "supertest": "^6.1.3", "ts-jest": "29.0.3", "ts-loader": "^9.2.3", "ts-node": "^10.0.0", "tsconfig-paths": "4.1.1", "typeorm-model-generator": "^0.4.6", "typescript": "^4.7.4", "webpack": "^5.75.0", "webpack-cli": "^5.0.1", "webpack-node-externals": "^3.0.0", "webpack-pnp-externals": "^1.1.0" }, "jest": { "moduleFileExtensions": [ "js", "json", "ts" ], "rootDir": "src", "testRegex": ".*\\.spec\\.ts$", "transform": { "^.+\\.(t|j)s$": "ts-jest" }, "collectCoverageFrom": [ "**/*.(t|j)s" ], "coverageDirectory": "../coverage", "testEnvironment": "node" } } 뭔가... 업데이트를 하면서 문제가 생긴것 같아 찾던 중nestjs@core와 swagger는 상호 작용하는 버전이 있다고 하던데 그것은nest 9.X 미만에서 그런 것이고 github에 올려주신 package.json에도 9.X이상의 nestjs를 쓰신것으로 확인하여 swagger와의 충돌 문제는 아닌 것으로 생각했습니다. 어떻게 해결하면 좋을까요~? 참 참고로nestjs : 9.1.8yarn: 1.22.19node: 18.13.0을 사용하고 있습니다.
-
미해결따라하며 배우는 NestJS
뒷 부분 공부하고 싶습니다!
강의 뒷 부분이 너무 궁금합니다!다른 비슷한 질문에 올라온 답변의 url은 다른 사람은 못 보게 돼 있는 것 같습니다.. 자료를 따로 받을 순 없는건가요??
-
미해결따라하며 배우는 NestJS
update를 repository로 빼서 작성했는데 오류가 나옵니다
boards.service.ts 코드입니다.import { Injectable, NotFoundException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { BoardStatus } from './board-status.enum'; import { Board } from './board.entity'; import { BoardRepository } from './board.repository'; import { CreateBoardDto } from './dto/create-board.dto'; @Injectable() export class BoardsService { constructor( @InjectRepository(Board) private boardRepository: BoardRepository, ) {} createBoard(createBoardDto: CreateBoardDto): Promise<Board> { return this.boardRepository.createBoard(createBoardDto); } async getBoardById(id: number): Promise<Board> { console.log(id, 'ididid'); return this.boardRepository.getBoardById(id); } async deleteBoard(id: number): Promise<void> { const result = await this.boardRepository.delete(id); if (result.affected == 0) { throw new NotFoundException(`Can't find Board with id ${id}`); } } async updateBoardStatus(id: number, status: BoardStatus): Promise<Board> { const board = await this.getBoardById(id); board.status = status; await this.boardRepository.save(board); return board; } } board.repository.ts 코드입니다import { Injectable, NotFoundException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { BoardStatus } from './board-status.enum'; import { Board } from './board.entity'; import { BoardRepository } from './board.repository'; import { CreateBoardDto } from './dto/create-board.dto'; @Injectable() export class BoardsService { constructor( @InjectRepository(Board) private boardRepository: BoardRepository, ) {} createBoard(createBoardDto: CreateBoardDto): Promise<Board> { return this.boardRepository.createBoard(createBoardDto); } async getBoardById(id: number): Promise<Board> { console.log(id, 'ididid'); return this.boardRepository.getBoardById(id); } async deleteBoard(id: number): Promise<void> { const result = await this.boardRepository.delete(id); if (result.affected == 0) { throw new NotFoundException(`Can't find Board with id ${id}`); } } async updateBoardStatus(id: number, status: BoardStatus): Promise<Board> { const board = await this.getBoardById(id); board.status = status; await this.boardRepository.save(board); return board; } } [Nest] 12296 - 2023. 01. 26. 오후 4:25:43 ERROR [ExceptionsHandler] this.boardRepository.getBoardById is not a functionTypeError: this.boardRepository.getBoardById is not a function at BoardsService.getBoardById (C:\Users\lgh38\Desktop\GH\nest-board-app\src\boards\boards.service.ts:22:33) at BoardsService.updateBoardStatus (C:\Users\lgh38\Desktop\GH\nest-board-app\src\boards\boards.service.ts:33:30) at BoardsController.updateBoardStatus (C:\Users\lgh38\Desktop\GH\nest-board-app\src\boards\boards.controller.ts:44:31)오류 내용은 위와 같습니다. 자세히 보면 this.boardRepository.getBoardById is not a function이라고 나오는데 제가 생각 했을 땐 처음 service의 updateBoardStatus 함수에서 getBoardById 함수로 넘겨주고 또 getBoardById 함수가 repository 안에 있는 getBoardById 함수에게 값을 넘겨서 두 번 리턴 받아서 해결 될 줄 알았는데 에러가 나오더라구요..오히려 분리를 안 시켰을 땐 오류가 안 나옵니다 무슨 이유일까요..?
-
미해결따라하며 배우는 NestJS
findOne() undefined 이유 아시는분
async validate(payload) { const { username } = payload; console.log(username); console.log(payload); const user: User = await this.userRepository.findOne(username); if (!user) { throw new UnauthorizedException('error'); } return user; } }logleejinleejinseong{ username: 'leejinleejinseong', iat: 1674638178, exp: 1674641778 }위 로그처럼 데이터는 로그에 찍히는데 왜 findOne에서 undefined 나올까요? 이유 아시는분..2시간 박치기하고있습니다..덜덜;;; 별짓 다해봐도 해결이 안되네요;;
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
Workspaces, Channels, Users 들간의 entity 에서 ManyToMany를 제거하는 방법
nest-typeorm 폴더에서 Workspaces, Channels, Users 들간의 entity 에서 ManyToMany 관계를 제거하고 OneToMany와 ManyToOne관계로 대신하는 코드가 있습니다. ManyToMany관계를 사용하지 않으려면 @ManyToMany 부분을 제거하고 field들만 남겨 놓으면 되나요?
-
미해결따라하며 배우는 NestJS
회원가입 기능 구현
#7-2 회원가입 기능구현에서 강의 내용 전체 작성 후 회원가입 진행하였는데, username과 password가 컨트롤러에서 console.log(authCredentialDto)를 찍으니 빈 객체만 내뱉고 있고 db에 정상적으로 저장이 되지 않았습니다. 이리저리 코드를 수정해보니.dto 구성 단게에서 validator import 후에 정상적으로 출력이 됩니다. 강의 영상에서는 문제 없이 되던데 왜 이렇게 되는지 궁금합니다.
-
미해결따라하며 배우는 NestJS
구현 완료 후 TypeError: this.userRepository.createUser is not a function
TypeError: this.userRepository.createUser is not a function포스트맨에서 localhost:3000/auth/signup실행시 서버가 터지며ㅑㄴ서TypeError: this.userRepository.createUser is not a function이런 에러를 내보내고 있는데, 아무리봐도 코드는 모두 똑같아서 무슨 문제인지 찾아지지가 않네요ㅠ
-
미해결따라하며 배우는 NestJS
강의 잘들었습니다! 배포 자료 받을수있을까요?
안녕하세요. 강의 잘들었습니다. 감사합니다.그런데 마지막에보여주신 배포관련 pdf 볼수있을까요? 다른분이 질문해주신 답글https://drive.google.com/file/d/1z3QUaECsZ_bVHIUF-rYyDrNv_oCvR8re/view?usp=sharing여기에는 한장의 사진만 보여서요!
-
미해결따라하며 배우는 NestJS
npm run start시 QueryFailedError: "username" 열의 자료 가운데 null 값이 있습니다. 에러가 발생합니다.
npm run start로 application을 실행시켰을 때QueryFailedError: "username" 열(해당 릴레이션 "user")의 자료 가운데 null 값이 있습니다에러가 발생합니다.DB 상태는 회원가입한 유저가 user 테이블에 존재합니다.
-
미해결따라하며 배우는 NestJS
typeorm 0.3.x 버전 오류
많은 분들이 남겨준 것처럼 typeorm 0.3.x 버전 오류로 인해 저도 조금 고생했습니다.공식문서 참조하며 해결했습니다.https://docs.nestjs.com/techniques/database#repository-patterntypeorm 0.3.x 버전은 @EntityRepository 가 deprecated 됐기 때문에 custom Repository를 생성해주었습니다. custom Repository 생성은 아래 블로그를 참조했습니다.https://velog.io/@pk3669/typeorm-0.3.x-EntityRepository-%EB%8F%8C%EB%A0%A4%EC%A4%98위 링크 내용을 참조로 typeorm-ex.decorator.ts 파일과 typeorm-ex.module.ts 파일을 생성합니다.해당 링크가 문제가 될 시 링크 바로 삭제하도록 하겠습니다 ㅠ.. typeorm.config.tsentities를 불러오기 위해 경로 또는 저희가 설정한 entitiy를 바로 집어 넣었습니다.autoLoadEntities: true - entities를 빼고 해당 옵션을 넣어서 자동으로 불러올 수도 있습니다. (본인이 직접 컨트롤 하는 것이 아니기 때문에 부정확해질 수도 있음.)board.repository.ts저희 repository에 @EntityRepository 대신 CustomRepository(Board)을 넣어줍니다.board.module.tsimports는 custom Repository를 불러와야 하기 때문에, 저희가 만든 TypeOrmExModule class의 forCustomRepository에 저희 Repository를 넣어줍니다.board.service.ts기존에 @EntityRepository를 사용한 경우 @InjectRepository 데코레이터를 사용했지만 해당 부분을 유지하면 오류가 발생한다고 합니다.따라서 @CustomRepository를 생성하여 사용하는 경우 @InjectRepository를 제거하고 사용합니다. 이러면 아직 findOne 메소드의 id는 빨간줄인데findOne 메소드는 options로 FindOneOptions Parameter를 받게 되어 있고해당 FindOneOptions중 저희가 사용할 것은 where 옵션을 사용해야 해당 id를 통해 데이터를 불러올 수 있습니다.그래서 최종적으로 findOne 메소드는 아래 그림과 바꿔주면 해당 메소드를 사용할 수 있게 됩니다.
-
미해결따라하며 배우는 NestJS
저는 왜 import가 자동으로 되지 않을까요?
혹시 관련 모듈이나 단축키가 있을까아ㅛ?이번 강의에서는 BaseEntity가 영상에서 보면 자동으로 import가 되던데 저는 되지 않습니다;
-
미해결따라하며 배우는 NestJS
typeorm 버젼 0.3.x 문제로 인한 deperaciated 문제 쉽지 않네여
이거 강의 다시 찍어주시면 안되나여 인터넷 자료만 보고 따라 하기 넘 어렵 ; stackover flow 에서 뭐라는건지 잘몰겠습니다 ㅋㅋ; https://stackoverflow.com/questions/71557301/how-to-workraound-this-typeorm-error-entityrepository-is-deprecated-use-repo
-
미해결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 내에 설치가 되어있는것으로 나왔습니다.