【发布时间】:2019-04-11 05:50:51
【问题描述】:
我有一个包含 3 个实体、文档、员工和经理的模型。一个文档属于一个员工,一个员工属于一个经理。 我的目标是检索经理员工的所有文件。
我的一段代码正在运行
Document.findAll({
include: [{
model: models.Employee,
required: true,
as: 'employee',
include: [{
model: models.Manager,
required: true,
as: 'manager',
}],
}],
但我不是很满意,我希望我的 where 条件不在我的包含范围内,但是当我尝试时
where {
'employee.manager.id': id
}
引发错误。
是否可以在包含之外设置 where 条件?
编辑:
我将代码更改为
Document.findAll({
where: {'$employee.manager.id$': id},
include: [{
model: models.Employee,
required: true,
as: 'employee',
include: [{
model: models.Manager,
required: true,
as: 'manager',
where: { id: managerId },
}],
}],
它正在工作。
现在,我想改进我的模型。每个文档作为一种类型(管理,评估......),我想为每个经理检索每种类型的最新文档。我使用了一个工作正常的订单,并尝试使用一个不工作的组
order: [ [ 'updatedAt', 'DESC' ]],
group: ['type'],
我收到以下消息:列 \"Document.id\" 必须出现在 GROUP BY 子句中或用于聚合函数中。
知道我做错了什么吗?
【问题讨论】:
-
伙计,你为什么不满意?
-
我希望我的 where 条件能够在一个范围内设置所有嵌套包含
标签: mysql node.js sequelize.js