【发布时间】:2021-10-23 17:34:54
【问题描述】:
我正在使用 Sequelize 和 ExpressJS 开发一个 CRUD 应用程序,该应用程序具有以下表格:
| Parents | Students | ParentStudents |
|---|---|---|
| id | id | id |
| name | name | idParent |
| idStudent |
我想查询 Parents 表,并通过idParent上的students和ParentStudents之间的左连接创建students键;
我想通过以下方式获取数据:
{
"data":[
{
"name":"nameParent2",
"students":[
{
"name":"Student1"
},
{
"name":"Student2"
}
]
},
{
"name":"nameParent2",
"students":[
{
"name":"Student1"
},
{
"name":"Student2"
}
]
}
]
}
我尝试了类似的方法,但错误并提供来自 ParentStudents 的数据:
models.parents.findAll({
include: [{
model: models.parentStudents
}]
}).then(data => {
res.json({
message: "Hello from server!!!",
data: data
});
});
这样就无法在学生和家长学生之间建立关联。 (students 与 parentStudents 没有关联!)
models.parents.findAll({
include: [{
model: models.parentStudents,
include: [{
model: models.students
}]
}]
}).then(data => {
res.json({
message: "Hello from server!!!",
data: data
});
});
我的关系是这样完成的:
db.parents.hasMany(db.parentStudents);
db.students.hasMany(db.parentStudents);
我也试过Many-to-Many,但还是不行:
db.students.belongsToMany(db.parents, { through: db.parentStudents });
db.parents.belongsToMany(db.students, { through: db.parentStudents });
有人知道如何做到这一点吗?
【问题讨论】:
标签: mysql node.js database express sequelize.js