2017-02-13 19 views
2

Я хочу добавить многие из многих ассоциаций в моем приложении-узле, используя sequelize. Я новичок в продолжении ORM.Как добавить многие из многих ассоциаций в существующие модели в sequelize node.js?

У меня есть модель eixsting user.js. Я хочу создать новую модель проекта и добавить хотят многие ко многим ассоциации

Для этого я бегу sequelize создать таблицу и миграции создана Сейчас в ассоциации часть того, что я делаю, что многие ко многим ассоциации создали

Я нахожу множественным это сделать, что

Project.belongsToMany(User, {through: 'UserProject'}); 

Но где я пишу, потому что User.belongsToMany(Project, {through: 'UserProject'}); модель пользователь alreaady существующие

Второе, что я хочу знать, либо UserProject автоматически создается этим или его нужно вручную создать?

ответ

2

Рекомендуется использовать sequelize-cli и использовать инструмент sequelize init, который создает файл, который объединяет все ваши модели и создает ассоциации между ними. Связь выполняется с помощью метода класса associate, который должен быть реализован во всех ваших моделях (имеющих связь с другими).

Этот метод может выглядеть следующим образом (в случае User модели):

classMethods: { 
    associate: function(models){ 
     this.belongsToMany(models.Project, { through: 'UserProject' }); 
    } 
} 

И эквивалент в Project модели:

classMethods: { 
    associate: function(models){ 
     this.belongsToMany(models.User, { through: 'UserProject' }); 
    } 
} 

Если вы не хотите, чтобы добавить какие-либо другие дополнительные поля к таблице UserProject, она будет создана автоматически с полями UserId и ProjectId (если вы используете метод sequelize.sync() - в противном случае вы должны создать таблицу в файле миграции). В другом случае, когда вы хотите добавить другие поля, вам нужно будет создать такую ​​модель.

+0

Я понимаю, что вы отвечаете, но проблема в том, что пользовательская модель уже создана и выполняются ее миграции. Как я могу добавить this.belongsToMany (models.Project, {через: 'UserProject'}); в ассоциации пользователей –

+1

Зависит от того, как создаются ваши модели (вы можете прикрепить эту часть кода в редакторе). В любом случае вам нужно создать новый файл миграции для таблицы UserProject, чтобы создать отношение в базе данных. – piotrbienias

+0

в UserProject не нужно сообщать какие-либо ассоциации? –