inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Relation 테이블 관련 에러

496

ii

작성한 질문수 5

0

Movie, User 테이블하고 many-to-many 로 만든 Favorite 테이블이 있는데
Favorite 테이블에 저장하려고 할 때 이런 에러가 납니다.

query failed: INSERT INTO `favorite`(`id`, `userId`, `movieId`) VALUES (DEFAULT, DEFAULT, DEFAULT)
error: Error: Unknown column 'id' in 'field list'
query: ROLLBACK
[Nest] 782975  - 04/08/2023, 6:59:26 PM   ERROR [ExceptionsHandler] Unknown column 'id' in 'field list'

 

Movie 는 이렇게 만들어져있구요

import { Entity, Column, PrimaryGeneratedColumn, ManyToMany, JoinTable } from 'typeorm';
import { User } from '../users/users.entity';

@Entity()
export class Movie {
  @PrimaryGeneratedColumn()
  readonly id: number;

  @Column({ length: 100 })
  title: string;

  @Column('text', { nullable: true })
  desc: string;

  @ManyToMany(() => User, (user) => user.favorites)
  @JoinTable({ name: 'favorite' })
  favorites: User[];
}

User 는

import { Entity, Column, PrimaryGeneratedColumn, ManyToMany, JoinTable } from 'typeorm';
import { Movie } from '../movies/movies.entity';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  readonly id: number;

  @Column()
  username: string;

  @ManyToMany(() => Movie)
  @JoinTable({ name: 'favorite' })
  favorites: Movie[];
}

그리고 Favorite 은

import { Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
import { User } from '../users/users.entity';
import { Movie } from '../movies/movies.entity';

@Entity()
export class Favorite {
  @PrimaryGeneratedColumn()
  id: number;

  @ManyToOne(() => User, (user) => user.favorites)
  user: User;

  @ManyToOne(() => Movie, (movie) => movie.favorites)
  movie: Movie;
}

 

그런데 DB 를 보면 Favotie 테이블에 id 칼럼이 없습니다.

그래서 favoriteRepository.save() 할때 에러가 난다고 의심하고 있는데요, favorites.service.ts는

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Favorite } from './favorites.entity';

@Injectable()
export class FavoritesService {
  constructor(
    @InjectRepository(Favorite)
    private readonly favoriteRepository: Repository<Favorite>,
  ) {}

  async create(userId: number, movieId: number): Promise<Favorite> {
    const favorite = new Favorite();
    favorite.user = { id: userId } as any;
    favorite.movie = { id: movieId } as any;

    return await this.favoriteRepository.save(favorite);
  }
}

이렇게 되어있습니다.

어디를 고쳐야 하는걸까요?

node.js express nestjs typeorm

답변 1

1

제로초(조현영)

joinTable: 'favorite'이 class Favorite가 같다는 걸 typeorm이 알지 못합니다.

@Entity('favorite') 하세요

0

ii

답변 감사합니다. 아 근데 지금 Many-to-many 를 안 쓰고 Favorite 쪽에서는 Many-to-one 으로 하고 User하고 Movie 쪽에서 One-to-many 로 스키마를 좀 바꿨는데 이렇게 해도 괜찮을까요?

1

제로초(조현영)

네 그렇게도 가능합니다. 다만 조인을 두번해야할 뿐이죠

강의자료는 어디서 다운받나요?

0

119

4

질문 있습니다.

0

300

3

(강의 5:42 질문) providers를 통한 여러 개의 인스턴스 생성 & exports 통한 싱글톤 생성

0

154

2

코드 편집기 확장 프로그램

0

210

2

(질문)비밀 저장소에 접근하기 위한 인증 정보는 로컬 .env에 저장하는지?

0

148

2

(질문)외부 저장소를 통한 환경변수 불러오기 비동기 질문

0

170

3

로그인을 해도 LoggedInGuard쪽에서 false값이 나옵니다.

0

152

2

로그인방법이 고민됩니다.

0

191

2

yarn seed 명령어 실행 시 데이터 삽입 안됨

0

297

4

yarn run db:create 시에 발생하는 데코레이터 오류

0

243

2

npm run db:create 시에 발생하는 decorating 오류

0

235

2

RxJS 디버깅 질문 있습니다.

0

190

3

CacheManager에 대해 질문 있습니다.

0

176

2

로깅은 어떻게 하는게 효율적일까요?

0

226

1

CORS 질문 있습니다.

0

418

2

쿠키 옵션에 대해서 질문 있습니다.

0

185

2

로그아웃 요청이 403 forbidden 에러가 나는데 왜그런걸까요??

0

450

1

401 unauthorized문제

0

289

1

가드의 장점에 대해서 질문이 있습니다.

0

225

1

로그 관리에 대해 질문 있습니다.

0

252

2

CORS 에러 질문 있습니다.

0

319

2

배포 환경 DB 연결 질문 있습니다.

0

411

2

socket io 미 연결 문제 (nest & flutter)

1

1156

3

no elements in sequence 에러 관해서 질문이 있습니다.

0

456

1