如何在带有where子句的sequelize中使用嵌套包含?
How to use nested include in sequelize with where clause?
我想获取指定大学的成绩,
考试 table 有 startDate
、EndDate
、noOfStudents
和 collage_id
。
学生 table 有 examId
& subject
结果 table 有 studentId
、score
和 grade
。
我已经尝试在下面查询它 returns null for students 和 none for the exam 而且它一直在返回结果数据库中存在的所有数据,我只需要属于指定的大学所以这里有任何建议, 请
results.find({
include: [{
model: models.students,
include: [{
model: models.exam,
as: 'exam',
where:{collage_id:id}
}],
as: 'students'
}]
});
Output:{
"id": 1,
"student_id":2,
"score": 88,
"grade" : B,
"created_at": "2018-11-14T13:38:25.377Z",
"updated_at": "2018-11-14T13:38:25.377Z",
"students": null
}
Expected Output:{
"id": 1,
"student_id":2,
"score": 88,
"grade" : B,
"created_at": "2018-11-14T13:38:25.377Z",
"updated_at": "2018-11-14T13:38:25.377Z",
"students": {
"examId": 2
"subject":
},exam:{
"startDate":Date,
"EndDate":date,
"noOfStudents" : 100
"collage_id": 1
}
}
我看不出你的问题有什么困惑。
- 根据你在
Students table
中的问题,我可以看到你 只有 列 examId
和 subject
。那么你如何 link Results
table 与 Students
table.
link Results
table 和 Students
table 你的学生 table 应该是 Students(id / studentId,examId,subject)
和协会 (link) results.belongsTo(students,{foreignKey:'id / studentId'})
做完这些你只能说,
results.find({
include: [{
model: models.students,
}]
});
- 我能看到的第二个问题是你想在你的
Students
table 和你的 [=22= 之间建立 关联 (link) ] table,但是你的Exams
table 你只有列 startDate
,EndDate
,noOfStudents
和 collage_id
。那么这里的关联在哪里呢? link学生如何考试.
我认为 noOfStudents
列表示学生人数。如果你指的是学生的id。
你必须有一个协会Student.hasMany(Exam,{foreignKey:'noOfStudents'})
做完这些就可以查询了,
results.find({
include: [{
model: models.students,
include: [{
model: models.exam,
where:{collage_id:id}
}]
}]
});
我不确定关键字 as
,因为我对这一点也不熟悉。据我所知,您必须先在关联中使用关键字 as
,然后再使用它作为查询,但我不确定。
并且还尝试跟踪您对此(控制台)的查询并查看它生成的内容。 =)
我想获取指定大学的成绩,
考试 table 有 startDate
、EndDate
、noOfStudents
和 collage_id
。
学生 table 有 examId
& subject
结果 table 有 studentId
、score
和 grade
。
我已经尝试在下面查询它 returns null for students 和 none for the exam 而且它一直在返回结果数据库中存在的所有数据,我只需要属于指定的大学所以这里有任何建议, 请
results.find({
include: [{
model: models.students,
include: [{
model: models.exam,
as: 'exam',
where:{collage_id:id}
}],
as: 'students'
}]
});
Output:{
"id": 1,
"student_id":2,
"score": 88,
"grade" : B,
"created_at": "2018-11-14T13:38:25.377Z",
"updated_at": "2018-11-14T13:38:25.377Z",
"students": null
}
Expected Output:{
"id": 1,
"student_id":2,
"score": 88,
"grade" : B,
"created_at": "2018-11-14T13:38:25.377Z",
"updated_at": "2018-11-14T13:38:25.377Z",
"students": {
"examId": 2
"subject":
},exam:{
"startDate":Date,
"EndDate":date,
"noOfStudents" : 100
"collage_id": 1
}
}
我看不出你的问题有什么困惑。
- 根据你在
Students table
中的问题,我可以看到你 只有 列examId
和subject
。那么你如何 linkResults
table 与Students
table.
link Results
table 和 Students
table 你的学生 table 应该是 Students(id / studentId,examId,subject)
和协会 (link) results.belongsTo(students,{foreignKey:'id / studentId'})
做完这些你只能说,
results.find({
include: [{
model: models.students,
}]
});
- 我能看到的第二个问题是你想在你的
Students
table 和你的 [=22= 之间建立 关联 (link) ] table,但是你的Exams
table 你只有列startDate
,EndDate
,noOfStudents
和collage_id
。那么这里的关联在哪里呢? link学生如何考试.
我认为 noOfStudents
列表示学生人数。如果你指的是学生的id。
你必须有一个协会Student.hasMany(Exam,{foreignKey:'noOfStudents'})
做完这些就可以查询了,
results.find({
include: [{
model: models.students,
include: [{
model: models.exam,
where:{collage_id:id}
}]
}]
});
我不确定关键字 as
,因为我对这一点也不熟悉。据我所知,您必须先在关联中使用关键字 as
,然后再使用它作为查询,但我不确定。
并且还尝试跟踪您对此(控制台)的查询并查看它生成的内容。 =)