2017-02-13 74 views
2

我想使用sequelize在我的節點應用程序中添加多對多關聯。我在續集ORM中是新的。如何在sequelize node.js的現有模型中添加多對多關聯?

我有一個eixsting模型user.js.我想創建一個新的模型項目和許多補充想一對多關聯

對於我跑sequelize create table和遷移關聯部分創建 現在我做什麼多對多關聯創建

我覺得多這些做

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

但我在哪裏寫User.belongsToMany(Project, {through: 'UserProject'});,因爲用戶模型是我想知道的任何alreaady現有

第二件事0自動創建或需要手動創建它?

回答

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表中,它將自動創建,並且域UserIdProjectId(如果使用sequelize.sync()方法 - 否則必須在遷移文件中創建表)。在其他情況下,當您想添加其他字段時,您必須自己創建這樣一個模型。

+0

我明白你的答案,但問題是用戶模型已經創建並且它的遷移正在運行。我如何添加this.belongsToMany(models.Project,{through:'UserProject'});在用戶關聯 –

+1

取決於你的模型是如何創建的(你可以在編輯中附加這部分代碼)。無論如何,您需要爲'UserProject'表創建新的遷移文件以創建數據庫中的關係。 UserProject中的 – piotrbienias

+0

無需給出任何關聯? –

相關問題