从多个表中选择 Sequelize

Ell*_*key 5 mysql node.js sequelize.js

我目前正在使用sequelize开发一个系统,我需要一个查询来从多个表中获取数据,如下所示:

Select Courses.id, Rooms.DisplayLabel, Periods.DisplayName, Subjects.Name 
from Rooms, Periods,Subjects, Courses
where Periods.id = Courses.PeriodId  and Rooms.id=Courses.RoomId 
and Subjects.id = Courses.SubjectId and Courses.id = 2
Run Code Online (Sandbox Code Playgroud)

房间、主题和时期是目录,课程是我保存所有键的表。Sequelize 的定义是这样的:

module.exports = function(sequelize, DataTypes) {

  var Course = sequelize.define('Course', {
      Scholarship: {
        type: DataTypes.STRING(30)
      },
      Level: {
        type: DataTypes.INTEGER(2),
      },
      CourseType: {
        type: DataTypes.STRING(30),
      },
      RecordStatus: {
        type: DataTypes.BOOLEAN,
        default: true
      },
      DeletedAt: {
        type: DataTypes.DATE
      }
    },
    {
      associate: function(models){
        Course.belongsTo(models.School, {foreignKey: {unique: true}});
        Course.belongsTo(models.Person, {foreignKey: {unique: true}});
        Course.belongsTo(models.Period, {foreignKey: {unique: true}});
        Course.belongsTo(models.Schedule, {foreignKey: {unique: true}});
        Course.belongsTo(models.Room, {foreignKey: {unique: true}});
        Course.belongsTo(models.Subject, {foreignKey: {unique: true}});

        Course.belongsTo(models.user, { as: 'CreatedBy' });
        Course.belongsTo(models.user, { as: 'UpdateBy' });
        Course.belongsTo(models.user, { as: 'DeleteBy' });
      }
    }
  );

  return Course;
};
Run Code Online (Sandbox Code Playgroud)

到目前为止,我在控制器上得到的唯一查询是:

exports.courseFields = function(req, res) {

    db.Course.find({
        where: {id: req.params.PeriodIdF},
        attributes: ['id'], 
        include: [{model:db.Room, attributes:['DisplayLabel']}]})
    .then(function(courses) {
            return res.json(courses);
        })
        .catch(function(err) {
            return res.render('error', {
                error: err,
                status: 500
            });
        });
};
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何包含其他表和字段?我很困惑sequelize是如何工作的。

小智 7

更新您的包含块

include: [
             {model:db.Room, attributes:['DisplayLabel']},
             {model:db.Periods, attributes:['DisplayLabel']},
             {model:db.Subjects, attributes:['Name']}   
         ]
Run Code Online (Sandbox Code Playgroud)