2015-03-17 2 views
1

Создание следующих соотношенийТрехходовые отношений

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

создаст два relationshiptables

BookmarkTag |bookmarkId|tagId

UserBookmark |bookmarkId|userId

я хотел BookmarkTag содержать идентификатор пользователя как хорошо, так что я знаю который пользователь добавил тег, в который закладок

BookmarkTag

| bookmarkId | TagID | идентификатор пользователя

является то, что возможно через sequelize ассоциаций

fullcode

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(); 

ответ

1

Если определить таблицу BookmarkTag явно можно добавить дополнительные атрибуты его:

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

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

Обратите внимание, что мы передаем ссылку на модель BookmarkTag, а не строку здесь.

Чтобы установить идент на бирке, вы передаете дополнительный объект при выполнении addTag

Bookmark.addTag(tag, { userId: 42 }); 
Смежные вопросы