三向关系
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 });
正在创建以下关系
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 });