所以我有两个表:Class 和 Course。每个类(class)都有一个 course_id,用于定义它在 Course 表中的类(class)类型。这是我的模型:
const Class = sequelize.define('class', {
class_date: Sequelize.DATE,
begin_time: Sequelize.TIME,
end_time: Sequelize.TIME,
max_capacity: Sequelize.INTEGER,
is_published: Sequelize.BOOLEAN,
training_facility_id: Sequelize.INTEGER,
state_id: Sequelize.INTEGER,
registration_deadline: Sequelize.DATE,
course_id: Sequelize.INTEGER,
is_report_60_generated: Sequelize.BOOLEAN,
completed_by_user_id: Sequelize.INTEGER
}, {
timestamps: false,
freezeTableName: true
})
const Course = sequelize.define('course', {
code: Sequelize.STRING,
name: Sequelize.STRING
}, {
timestamps: false,
freezeTableName: true
})
当我点击类端点时,我得到了一个类数组。我将如何设置查询以响应每个类(class)的类(class)名称和代码,而不仅仅是 course_id?
最佳答案
您需要 create a relationship Class
和 Course
模型之间。如果您在模型定义中指定 underscored: true
选项,它将不会使用驼峰式大小写,并且会自动创建 Class.course_id
列,因此您不需要定义它(completed_by_user_id
可能也是如此)。
const Class = sequelize.define('class', {
class_date: Sequelize.DATE,
begin_time: Sequelize.TIME,
end_time: Sequelize.TIME,
max_capacity: Sequelize.INTEGER,
is_published: Sequelize.BOOLEAN,
training_facility_id: Sequelize.INTEGER,
state_id: Sequelize.INTEGER,
registration_deadline: Sequelize.DATE,
// this will be auto-created by the relationship
// course_id: Sequelize.INTEGER,
is_report_60_generated: Sequelize.BOOLEAN,
// you probably want a relationship here as well
completed_by_user_id: Sequelize.INTEGER
}, {
timestamps: false,
freezeTableName: true,
// use underscored names
underscored: true,
})
const Course = sequelize.define('course', {
code: Sequelize.STRING,
name: Sequelize.STRING
}, {
timestamps: false,
freezeTableName: true,
underscored: true,
})
根据您的数据模型,似乎每个 Class
都需要一个关联的 Course
具有不同的属性,例如开始时间等,因此您将告诉 Sequelize 每个 类
belongsTo()
类(class)
。
// tell Sequelize that once course will be assigned to many classes, and it is required (not null)
Class.belongsTo(Course, { foreignKey: { allowNull: false } })
一旦它们相关联,您就可以使用 include
option值以指定要连接到您的主要查询的模型。如果您在关系中使用 as
,您也必须在此处指定它。
// do a joined query using "include"
Class.findAll({
include: [
{
model: Course
}
]
})
关于javascript - 如何使用 sequelize 从 2 个表中查询信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40899611/