为BelongsToMany关联化连接表列名称

雅诺施·休布纳

我正在为我的postgres数据库使用sequelize,并且有以下两个表:

  1. 艺术家
  2. 专辑

它们先前使用 sequelize.define

这是M:N关系,所以我决定采用以下关联:

Artist.belongsToMany(Albums, { through: 'ArtistAlbums' }

Album.belongsToMany(Artist, { through: 'ArtistAlbums' }

这很好用,但是后面的ArtistArtAlbums表具有非常奇怪的列名:

“ ArtistArtistId”,“ AlbumAlbumId”是指艺术家(artistId)和专辑(albumId)的主键。但是,我只想在其中包含“ albumId”和“ artistId”,但无法弄清楚如何告诉续集做到这一点。我尝试了以下方法:

  1. 试图在通过选项中指定一个模型,该选项指定了两个类似的键。

问题:我将在表中同时包含密钥和生成的密钥

  1. 我尝试将unique: false选项添加到它,这也不起作用。
  2. 我尝试使用“ as”和“ sourceKey”,“ targetKey”以及“ uniqueKey”,但这都无济于事。

任何帮助表示赞赏!

编辑1:

我认为使用otherKey可以将一列设置为我想要的名称,而另一列则不能。

mdmundo

尝试这个:

Artist.belongsToMany(Album, {
  through: 'ArtistAlbums',
  unique: false,
  foreignKey: 'artistId'
});

Album.belongsToMany(Artist, {
  through: 'ArtistAlbums',
  unique: false,
  foreignKey: 'albumId'
});

请注意,我的代码和您的代码之间唯一区别foreignKey定义。

上面的代码在我的postgreSQL DB中创建了以下结果。(我省略了一些数据):

CREATE TABLE public."ArtistAlbums"
(
  "createdAt" timestamp with time zone NOT NULL,
  "updatedAt" timestamp with time zone NOT NULL,
  "artistId" integer NOT NULL,
  "albumId" integer NOT NULL,
  CONSTRAINT "ArtistAlbums_pkey" PRIMARY KEY ("artistId", "albumId"),
  CONSTRAINT "ArtistAlbums_albumId_fkey" FOREIGN KEY ("albumId")
      REFERENCES public."Album" (id) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT "ArtistAlbums_artistId_fkey" FOREIGN KEY ("artistId")
      REFERENCES public."Artist" (id) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE
)

要生成我使用的其他表:

const Artist = sequelize.define(
  'Artist',
  {
    id: {
      type: DataTypes.INTEGER,
      primaryKey: true
    }
  },
  {
    freezeTableName: true
  }
);

const Album = sequelize.define(
  'Album',
  {
    id: {
      type: DataTypes.INTEGER,
      primaryKey: true
    }
  },
  {
    freezeTableName: true
  }
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获得关联表列名称?cakephp 3.x

来自分类Dev

将图表系列名称设置为表列名称而不是系列 1、2、3,

来自分类Dev

表列名称为“默认”

来自分类Dev

如何创建列名称为TRUE的列名称的列表列

来自分类Dev

Excel:派生表列名称与公式

来自分类Dev

设置JavaFX表列名称填充

来自分类Dev

Javascript获取数据表列名称

来自分类Dev

设置JavaFX表列名称填充

来自分类Dev

Javascript获取数据表列名称

来自分类Dev

Excel行中的检查名称与表列名称相同

来自分类Dev

Excel行中的检查名称与表列名称相同

来自分类Dev

与Sequelize的belongsToMany关联的限制

来自分类Dev

在python中使用pyodbc获取MSSQL表列名称

来自分类Dev

在r markdown中包装pandoc表列名称

来自分类Dev

如何从C代码获取R列表列名称

来自分类Dev

SQL Server动态数据透视表列名称

来自分类Dev

如何在XLWings中引用Excel表列名称?

来自分类Dev

根据表列名称和数据创建json键值

来自分类Dev

如何重命名SQL表列名称而不破坏内容

来自分类Dev

数据表列名省略以数字开头的名称

来自分类Dev

SQL Server动态数据透视表列名称

来自分类Dev

匹配A,B,C的Excel工作表列名称

来自分类Dev

返回保留关键字的表列名称?

来自分类Dev

如何在XLWings中引用Excel表列名称?

来自分类Dev

SharePoint列表列名称不是创建的吗?

来自分类Dev

熊猫数据透视表列名称和值列名称要删除

来自分类Dev

JPA @ElementCollection List指定连接列名称

来自分类Dev

用给定列的值连接列名称

来自分类Dev

列名称无法在SparkSQL连接中解析