三向关系

Three way relationship

正在创建以下关系

bookmark.belongsToMany(tag, {through: 'BookmarkTag'}); user.belongsToMany(bookmark, {through: 'UserBookmark'});

将创建两个关系表

BookmarkTag |bookmarkId|tagId

UserBookmark |bookmarkId|userId

我希望 BookmarkTag 也包含用户 ID,以便我知道哪个用户向哪个书签添加了标签

书签标签

|bookmarkId|tagId|userId

是否可以通过 sequelize 关联

完整代码

var bookmark = sequelize.define('Bookmark', {
  name: Sequelize.STRING,
  url: Sequelize.STRING
});
var tag = sequelize.define('Tag', {
  value: Sequelize.STRING
});
var user = sequelize.define('User', {
  email: Sequelize.STRING
});
bookmark.belongsToMany(tag, {through: 'BookmarkTag'});
user.belongsToMany(bookmark, {through: 'UserBookmark'});
sequelize.sync();

如果您明确定义 BookmarkTag table,您可以向其添加额外的属性:

BookmarkTag = sequelize.define('BookmarkTag', {
    userId: Sequelize.INTEGER
});

bookmark.belongsToMany(tag, {through: BookmarkTag});

请注意,我们传递的是对 BookmarkTag 模型的引用,而不是此处的字符串。

要在标签上设置用户 ID,您需要在执行 addTag

时传递一个额外的对象
Bookmark.addTag(tag, { userId: 42 });