2016-11-10 46 views
0

我使用sequelize 3.24.3連接到MySQL數據庫。Sequelize - 如何從查詢自動檢索到父表的子記錄?

在數據庫中,我有兩個表之間的一個一對多的關係 - 紙& PaperVersion。 1紙張可以有多個版本。 我的要求是編寫一個查詢從Paper表中檢索紙張,返回的結果集還應該包含與紙張相關的版本。

這是我的模型看起來怎麼樣:

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語句:

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

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

當我對無論是紙張還是PaperVersion模型執行查找或的findAll我只從Paper或PaperVersion表中獲取記錄。 我在某處讀到可以在結果集中包含關聯表中的記錄。有人可以讓我知道我該如何做到這一點。

回答

0

事情是這樣的:

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

我收到以下錯誤:未處理的廢品:PaperVersion沒有關聯到紙上! –

+0

忽略我以前的評論。我的模型和數據庫不同步。我在強制同步後使用它。謝謝! –