【问题标题】:TypeORM - MYSQL - @OneToOne annotationTypeORM - MYSQL - @OneToOne 注解
【发布时间】:2020-04-12 14:19:24
【问题描述】:

我的 MySQL 数据库中有两个表:

1 表通道:

CREATE TABLE `channel` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8_bin NOT NULL,
  `youtubeId` varchar(255) COLLATE utf8_bin NOT NULL,
  `language` int NOT NULL,
  `lastUpdatedDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `FK_LANGUAGE` (`language`),
  CONSTRAINT `FK_LANGUAGE` FOREIGN KEY (`language`) REFERENCES `language` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin

TypeOrm 中的 Entity 看起来像:

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

  @Column()
  name: string;

  @Column()
  youtubeId: string;

  @OneToOne((type) => Language)
  @Column()
  language: Language;

  @Column()
  lastUpdatedDate: Date;

  @Column()
  createdDate: Date;
}

2 表格语言

CREATE TABLE `language` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(45) COLLATE utf8_bin DEFAULT NULL,
  `code` varchar(45) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

TypeORM 中的实体看起来像:

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

  @Column()
  name: string;

  @Column()
  code: string;
}

错误:

问题是,一旦我启动我的 nodejs 服务器,我就会得到一个错误:

DataTypeNotSupportedError:“Channel.language”中的数据类型“Language” “mysql”数据库不支持。

我在数据库方面并不是很出色,我尝试学习 TypeORM,所以我现在处于不知道我是否在 TypeORM 或我的数据库中搞砸了某些东西的情况下。任何可以引导我正确方向的建议都更受欢迎

【问题讨论】:

    标签: mysql node.js database express typeorm


    【解决方案1】:

    尝试使用@JoinColumn() 而不是@Column()

    @JoinColumn() 将为频道表创建外键 language_id

    @Entity()
    export class Channel {
      @PrimaryGeneratedColumn()
      id: number;
    
      @Column()
      name: string;
    
      @Column()
      youtubeId: string;
    
      @OneToOne((type) => Language)
      @JoinColumn()
      language: Language;
    
      @Column()
      lastUpdatedDate: Date;
    
      @Column()
      createdDate: Date;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-06-10
      • 2021-05-19
      • 2012-06-03
      • 2012-11-23
      • 2021-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多