Sequelize - 如何自动从查询中检索子记录到父表?

时间:2016-11-10 14:32:03

标签: javascript mysql node.js sequelize.js

我使用sequelize 3.24.3连接到MySQL数据库。

在数据库中,我在两个表之间有一对多的关系 - Paper& 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
           });

当我在Paper或PaperVersion模型上执行find或findAll时,我只从Paper或PaperVersion表中获取记录。 我在某处读到可以在结果集中包含来自关联表的记录。有人可以告诉我如何实现这一目标。

1 个答案:

答案 0 :(得分:1)

这样的事情:

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