egg
egg copied to clipboard
关于连表查询嵌套太多的问题
超过三级嵌套的时候,想合利用Sequelize.col()合并字段
正常合并字段
await this.ctx.model.Student.findAll({
attributes: [[this.app.Sequelize.col('subject.name'), 'subjectName']],
include: [
{
model: this.ctx.model.Subject,
as: 'subject',
attributes[]
}
]
})
预期结果
[
{
"id": "1",
"name": "student1",
"subjectName": "数学"
},
{
"id": "1",
"name": "student1",
"subjectName": "语文"
}
]
如果加一级成绩,并且吧成绩合并到学科这一级
await this.ctx.model.Student.findAll({
include: [
{
model: this.ctx.model.Subject,
as: 'subject',
attributes: [[this.app.Sequelize.col('subject->studentScores.score'), 'subjectScore']],
include: [
{
model: this.ctx.model.StudentScores,
as: 'studentScores',
}
]
}
]
})
结果会报错
Unknown column 'subject.subject->studentScores.score' in 'field list'
框架会默认吧前面的表名加上!
如果是四级
Unknown column 'subject->studentScores.${Sequelize.col()}' in 'field list'
这到底是一个缺陷呢还是我没有找到方法
相关环境信息
- 操作系统:windows
- Node 版本:v12.13.0
- Egg 版本:2.15.1