提问人:Jozef 提问时间:8/31/2023 最后编辑:Mark RotteveelJozef 更新时间:9/5/2023 访问量:23
如何从查询结果中隐藏包含的嵌套模型
How to hide included nested model from query results
问:
我想在我的 Sequelize 查询的 findOptions 接口中包含嵌套模型,以便我可以设置条件,但我不希望它们显示为结果。我知道已经有人问过这个问题,但建议的解决方案都不适合我。我的示例情况是,我有 3 个表,其中经理可以有 n 个员工,一个员工有 n 个文档
表
经理 -> 员工 (1:n) 员工 -> 文档 (1:n)
我想运行一个查询,该查询仅显示作为输入提供的特定经理相关的文档的 ID。这是我使用的 findOptions 配置,其中在文档表上运行 FindAll 命令
findOptions = {
include: {
model: Employee,
required: true,
as: 'employee',
attributes: { include: [] },
include: {
model: Manager,
as: 'manager',
attributes: { include: [] },
where: {
managerId: { [Op.in]: authorized.managerIds }
}
}
}
};
但是,由于某种原因,虽然结果返回的文档是正确的,但响应还包含嵌套在其中的整个 Manager 和 Employee 对象,如下所示。
[{
"documentId": 3,
"employee": {
"employeeId": 2,
"manager": {
"managerId": 3
}
}
}]
我做错了什么,如何摆脱嵌套在里面的整个员工对象,所以结果只看起来像这样?
[{ "documentId": 3 }]
答:
1赞
Anatoly
9/5/2023
#1
要排除嵌套模型属性,只需在选项中指示:attributes: [],
include
include: {
model: Manager,
as: 'manager',
attributes: [],
where: {
managerId: { [Op.in]: authorized.managerIds }
}
}
评论
attributes: [],