Sequelize—如何仅在包含的模型至少有一条记录时返回行



我想在Sequelize这个查询:

const results = await WorkflowAssignation.findAndCountAll(
{
limit: limit, 
offset: offset, 
where: 
{ 
userId: userIds, 
status: status
}, 
include: [ 
{ 
model: WorkflowStepAssignation,
include: [ 
{ model: WorkflowStepAssignationHasUser, include: [ users ]}
] 
}, 
{ model: users } 
], 
distinct: true, 
order: [ [ 'createdAt', 'DESC'], [ { model: WorkflowStepAssignation, as: "steps" }, 'stepNumber', 'ASC' ] ]  
});

问题是,如果WorkflowStepAssignationHasUser表包含至少1条记录的值作为userid的参数传递,我只需要返回WorkflowAssignation

如果我在这行{ model: WorkflowStepAssignationHasUser, include: [ users ]}中使用where,它仍然会返回所有WorkflowAssignation,只有具有userId值的步骤,这不是我想要的。

这就像我想返回所有的WorkflowAssignation,包括所有的表,但只有在WorkflowStepAssignation -> WorkflowStepAssignationHasUser中有参数中的用户。

关系:

WorkflowAssignation

有许多

WorkflowStepAssignation

有许多

WorkflowStepAssignationHasUser(有userId列)

addrequired: true

const results = await WorkflowAssignation.findAndCountAll(
{
limit: limit, 
offset: offset, 
where: 
{ 
userId: userIds, 
status: status
}, 
include: [ 
{ 
model: WorkflowStepAssignation,
include: [ 
{ model: WorkflowStepAssignationHasUser, include: [ users ]}
] 
}, 
{ model: users } 
], 
distinct: true, 
required: true,
order: [ [ 'createdAt', 'DESC'], [ { model: 
WorkflowStepAssignation, as: "steps" }, 'stepNumber', 'ASC' ] ]  
});