gpt4 book ai didi

javascript - 如何在 JavaScript 中通过 MySQL 建立多对多关系?

转载 作者:行者123 更新时间:2023-11-29 16:46:29 25 4
gpt4 key购买 nike

我有 2 个模型,他们给出了 n:m 关系:老师、类(class)现在我想做一个查询来显示学生当前负责的类(class)(不是表中的所有类(class))。

这是我的类(class)模型:

module.exports = (sequelize, DataTypes) => {
var Model = sequelize.define('Class', {
name : DataTypes.STRING,
category : {type: DataTypes.STRING, unique: true},
day : DataTypes.ENUM('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'),
hour : DataTypes.STRING,
});

Model.associate = function(models){
this.Students = this.belongsToMany(models.Student, {through: 'StudentClass'});
};
Model.associate = function(models){
this.Staffs = this.belongsToMany(models.Staff, {through: 'ClassTeacher'});
};

Model.prototype.toWeb = function (pw) {
let json = this.toJSON();
return json;
};

return Model;

教师模型:

module.exports = (sequelize, DataTypes) => {
var Model = sequelize.define('Staff', {
first : DataTypes.STRING,
last : DataTypes.STRING,
email : {type: DataTypes.STRING, allowNull: true, unique: true, validate: { isEmail: {msg: "Email invalid."} }},
phone : {type: DataTypes.STRING, allowNull: true, unique: true, validate: { len: {args: [7, 20], msg: "Phone number invalid, too short."}, isNumeric: { msg: "not a valid phone number."} }},
password : DataTypes.STRING,
role : DataTypes.ENUM('Head', 'Teacher'),
});

Model.associate = function(models){
this.Students = this.belongsToMany(models.Student, {through: 'TeacherStudent'});
};
Model.associate = function(models){
this.Classes = this.belongsToMany(models.Class, {through: 'TeacherClass'});
};

我发现并尝试的是:

  Class.findAll({
attributes: ['id', 'name'],
include: [{
model:Staff,
attributes: ['first', 'last'],
through: {
attributes: ['StaffId', 'ClassId'],
// where:{ClassId:1}
}
}]
}).then(classes => {
res.send(classes);
});

但它向我显示了所有类(class)。

预先感谢您的帮助。

最佳答案

How to implement many to many association in sequelize
我认为您还没有关联两个表之间的关系,请查看上面提到的链接,它可能会帮助您理解我要解释的内容。

关于javascript - 如何在 JavaScript 中通过 MySQL 建立多对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53076244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com