在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;