2017-02-13 2 views
2

sequelizeを使用して、ノード・アプリケーション内に多対多の関連付けを追加したいとします。私はORMの続編に新しいです。sequelize node.jsの既存モデルのmany to manyアソシエーションを追加するには?

私はeixstingモデルuser.jsを持っています。私は新しいモデルプロジェクトを作成し、そのために多くの関連

に多くしたい追加したいI実行sequelize表を作成し、移行は、私は多くの協会への多くは、私が複数見つかり

作成したことを何の関連部分に今すぐ を作成ユーザモデルが、私はどちらかを知りたいalreaady既存

第二のものですので、

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

でもどこUser.belongsToMany(Project, {through: 'UserProject'});を書くことを行うには、これらの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

は関連付けを行う必要はありませんか? –