我使用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表中获取记录。 我在某处读到可以在结果集中包含来自关联表的记录。有人可以告诉我如何实现这一目标。
答案 0 :(得分:1)
这样的事情:
PaperModel
.findAll({
include: [{ model: PaperVersion}]
})
.then(function(papers) {
// do some processing
});