web-dev-qa-db-ja.com

NodeJSでの続編:内部JOIN実装の失敗

私には3つのテーブル請負業者、プロジェクトがあり、これら2つを結合できるのはprojects_contractorsで、モデルを作成して次のような関係を作成しました。

    Contractor.hasMany(Project, {joinTableName: 'projects_contractors'})
    Project.hasMany(Contractor, {joinTableName: 'projects_contractors'})

この請負業者ベースのプロジェクトにアクセスしたいのは、内部結合を意味します。

コアクエリ:請負業者からc.id、c.name、p.id、p.nameを選択しますc内部結合projects_contractors pc on c.id = pc.contractor_id内部結合プロジェクトpon p.id = pc.project_id

以下のコードの実装に失敗しました。 「必須」は、内部JOINに使用されたキーワードですが、保持すると機能しません。

     Contractor.findAll({ include: [Project, {required: false}]}).success(function(list){
       console.log("hi")
         res.send(204)
     })

必要とされない場合は、プロジェクトと請負業者に左外部JOINが作成されます。上記のシナリオのサンプル例を提案してください。

14
Ayyappa A

正しい構文は次のとおりです。

Contractor.findAll({ include: [{model: Project, required: true}]})

通常、インクルードパラメーターは、モデル、またはモデルパラメーターとオプションのas/required/include/whereパラメーターを持つオブジェクトのいずれかを取ります。

22
Mick Hansen