在Sequelize.js中“belongsTo”vs“hasMany”
B.belongsTo(A)
与A.hasMany(B)
之间有什么区别?
Artist = sequelize.define('Artist', {}); Album = sequelize.define('Albums', {}); Album.belongsTo(Artist, foreignKey: 'album_belongsl_artist'); Artist.hasMany(Album, foreignKey: 'artist_hasmany_albums');
如果它在两种情况下创buildAlbum
的依赖表?
当你做Album.belongsTo(Artist)
你正在创build关系,使您可以调用album.getArtist()
。 Artist.hasMany(Album)
以另一种方式链接关联,使您可以调用artist.getAlbums()
。 如果你只做了其中的一个,例如,如果你只做了Album.belongsTo(Artist)
你将能够检索到一个专辑的艺术家,而不是一个艺术家的所有专辑。
但是请注意,由于在你的例子中给出的外键,你有效地创build了两个关系。 生成的表如下所示:
CREATE TABLE IF NOT EXISTS `Albums` (`id` INTEGER NOT NULL auto_increment , `album_belongsl_artist` INTEGER, `artist_hasmany_albums` INTEGER, PRIMARY KEY (`id`))
如果你只想要一个关联,那么外键应该是一样的。 例:
Album.belongsTo(Artist, {foreignKey: 'album_id'}); Artist.hasMany(Album,{ foreignKey: 'album_id'});
这产生:
CREATE TABLE IF NOT EXISTS `Albums` (`id` INTEGER NOT NULL auto_increment , `album_id` INTEGER, PRIMARY KEY (`id`)) ENGINE=InnoDB;