我有两个表:
1-相册
2-首曲目
相册与“曲目”之间具有一对多关系,该曲目在删除时会级联。曲目与专辑具有多对一关系。
// Albums
module.exports = new EntitySchema({
name: "Albums",
columns: {
id: {
type: "integer",
primary: true,
generated: "increment"
},
title: {
type: "character varying",
length: 70,
nullable: false
}
},
relations: {
tracks: {
target: "Tracks",
nullable: false,
type: "one-to-many",
joinTable: true,
joinColumn: {name: "tracks", referencedColumnName: "id"},
inverseSide: "album_id",
cascade: true,
onDelete: "CASCADE"
},
}
});
// Tracks
module.exports = new EntitySchema({
name: "Tracks",
columns: {
id: {
type: "integer",
primary: true,
generated: "increment"
},
title: {
type: "character varying",
nullable: false
},
rank_in_album: {
type: "integer",
nullable: true
}
},
relations: {
album_id: {
target: "Albums",
type: "many-to-one",
joinTable: true,
joinColumn: {name: "album_id", referencedColumnName: "id"},
}
}
});
问题:
1)最终,我想要的行为是在删除专辑后删除曲目。但是,我不明白为什么此配置可以完成此行为。根据我的理解,如果在关系的专辑侧设置了“删除级联”,则不会删除专辑中的曲目。
2)如何正确设置专辑,以便删除专辑中的所有曲目后,专辑在删除时会级联。此外,如果专辑被删除,其曲目也会被删除。
这是与TypeOrm和Postgres一起使用的。