2016-11-10 5 views
0

私は、3.24.3のsequelizeを使用してMySQLデータベースに接続しています。Sequelize - 子レコードをクエリから親テーブルに自動的に取り込む方法は?

データベースには、2つのテーブル(Paper & PaperVersion)と一対多の関係があります。 1用紙は複数のバージョンを持つことができます。 私の要件は、Paperテーブルから用紙を取得するための単一のクエリを記述することです。返される結果セットには、用紙に関連付けられたバージョンも含まれている必要があります。

これは私のモデルがどのように見えるかです:私は紙やPaperVersionモデルのいずれかで見つけたかのfindAllを実行するときに

 PaperModel.findAll({ 
     }) 
     .then(function(papers){ 
      // do some processing 
     }); 

     PaperVersion.find({ 
      where:{ 
       paperId:paper.id, 
      } 
     }).then(function(version){ 
      // do some processing 
      }); 

var Paper = sequelize.define("paper", { 
     Author: DataTypes.STRING, 
     Status: DataTypes.ENUM('Pending Submission','Submitted) 
    }); 

    var PaperVersion = sequelize.define("paperVersion", { 
      ID: { 
       type: DataTypes.INTEGER, 
       primaryKey: true, 
       autoIncrement: true 
      }, 
      Title: DataTypes.STRING, 
      Description: DataTypes.STRING 
     }, 
     { 
      classMethods: 
      { 
       associate: function(models){ 
        PaperVersion.belongsTo(models.paper); 
       } 
      } 
     }); 

これは私がselect文を実行する方法ですPaperまたはPaperVersionテーブルからのみレコードを取得します。 私はどこかで、関連するテーブルのレコードを結果セットに含めることができます。誰かが私にこれを達成する方法を教えてもらえますか?このような

答えて

0

何か:未処理の拒否エラー:

PaperModel 
    .findAll({ 
    include: [{ model: PaperVersion}] 
    }) 
    .then(function(papers) { 
    // do some processing 
    }); 
+0

私は、次のエラーメッセージが表示さPaperVersionが紙に関連付けられていません! –

+0

私の前のコメントは無視されます。私のモデルとデータベースは同期していませんでした。私は力の同期の後にそれを働かせました。ありがとう! –

関連する問題