我有一个与审批模型(多级审批工作流)有很多关系的票证模型。批准属于用户。
对于一个特定的用例,我必须过滤所有待批准的用户,并向他显示他的待批准票据。
像这样解决了-
models.Ticket.findAll({
include: [{
model: models.Approval,
where: { userId: options.userId }
}]
}).then(function(tickets){...
给我过滤的票证,但我还必须得到票证的所有批准列表,以显示批准工作流。这可以通过Sequelize中的一个查询完成吗?
Data (T is Ticket, A is Approval and U is User) -
T1 - A1/U1, A2/U2, A3/U3
T2 - A4/U2
T3 - A5/U1, A6/U4
Output for U1 -
T1 - A1/U1
T3 - A5/U1
Expected for U1 -
T1 - A1/U1, A2/U2, A3/U3
T3 - A5/U1, A6/U4
最佳答案
在一个查询中找到解决方法。
更新票证,使其在批准时具有两个具有相同外键的关联(其中一个已定义别名)-
Ticket.hasMany(models.Approval, {
foreignKey: 'ticketId',
};
Ticket.hasMany(models.Approval, {
as: 'ApprovalFilter',
foreignKey: 'ticketId',
};
然后使用多个include进行过滤-
models.Ticket.findAll({
include: [{
model: models.Approval,
as: 'ApprovalFilter',
where: { userId: options.userId },
}, {
model: models.Approval,
}]
}).then(function(tickets){...