首页 > 解决方案 > 将模型与 sequelize-typescript 相关联

问题描述

我正在尝试创建以下关联:

用户有一个帐户 用户有一个应用程序 应用程序有许多成员

我的问题是,当创建模型时,帐户表会获得 Application 的外键,而根本不会创建成员表。

有谁知道我做错了什么?下面是我正在使用的代码

   //index.ts
      const sequelize = new Sequelize(database, username, password, params);
      sequelize.addModels([
        Member,
        Application,
        Account,
        User,
      ]);
      return sequelize;

    //Member.ts
    import {
      Table,
      Column,
      Model,
      BelongsTo,
      ForeignKey,
      DataType,
    } from "sequelize-typescript";
    import { Application } from "./application";
    
    @Table({ tableName: "Members" })
    export class Member extends Model<Member> {
      @ForeignKey(() => Application)
      @Column({ type: DataType.INTEGER })
      applicationId: number;
      @BelongsTo(() => Application)
      application: Application;
    }

// Application.ts
import {
  Table,
  Column,
  Model,
  BelongsTo,
  HasMany,
  ForeignKey,
  DataType,
} from "sequelize-typescript";
import { User } from "./user";
import { Member } from "./member";
@Table({ tableName: "Applications" })
export class Application extends Model<Application> {
  @ForeignKey(() => User)
  @Column({ type: DataType.INTEGER })
  userId: number;
  @HasMany(() => Member)
  members: Member;
  @BelongsTo(() => User)
  user: User;
}

//Account.ts
import {
  Table,
  Column,
  Model,
  BelongsTo,
  ForeignKey,
  DataType,
} from "sequelize-typescript";
import { User } from "./user";
@Table({ tableName: "ZohoCrms" })
export class ZohoCrm extends Model<ZohoCrm> {
  @ForeignKey(() => User)
  @Column({ type: DataType.INTEGER })
  userId: number;

  @BelongsTo(() => User)
  user: User;
}


//user.ts
export class User extend model<User> {
....
  @HasOne(() => ZohoCrm, "userId")
  zohoCrm: ZohoCrm;

  @HasOne(() => Application, "userId")
  application: Application;
}

标签: typescriptsequelize.jssequelize-typescript

解决方案


如果你使用 webpack,你需要在 table 装饰器中添加 tableName 和 modelName


推荐阅读