У меня есть две таблицы, которые связаны между собой.Таблица A и таблица B. Таблица A имеет отношение «один ко многим» с таблицей B. Я хочу получить все экземпляры A, имеющие связанный с ним экземпляр B со статусом ожидания.
Используемый запрос показан ниже. Я пытаюсь получить все экземпляры A с экземпляром B со статусом pending
.
await A.findAll({
limit,
offset,
include: [
{
model: B,
where: {
status: 'pending'
}
}
]
});
. Приведенный выше код возвращает несколько экземпляров одного и того жеэкземпляр А, который не является ожидаемым результатом.Если экземпляр A имеет два экземпляра B, связанных с ним со статусом pending
, он дважды вернет A только с ожидающим экземпляром.
Пример таблицы B показан ниже
Table B
id name status a_id
1 sample1 completed 1
2 sample2 pending 1
3 sample3 pending 1
4 sample4 pending 2
5 sample5 completed 3
5 sample6 completed 3
5 sample7 completed 3
Пример таблицы A показан ниже
Table A
id name
1 typeA
2 typeB
3 typeC
Если я выполню запрос для этих данных, я получу вывод, подобный следующему:
[
{
id: 1,
name: 'typeA',
Bs: [
{ id: 2, name: 'sample2', status: 'pending' }
]
},
{
id: 1,
name: 'typeA',
Bs: [
{ id: 3, name: 'sample3', status: 'pending' }
]
},
{
id: 2,
name: 'typeB',
Bs: [
{ id: 4, name: 'sample4', status: 'pending' }
]
}
]
Но ожидаемый результат должен быть примерно таким:
[
{
id: 1,
name: 'typeA',
Bs: [
{ id: 1, name: 'sample1', status: 'completed' },
{ id: 2, name: 'sample2', status: 'pending' },
{ id: 3, name: 'sample3', status: 'pending' }
]
},
{
id: 2,
name: 'typeB',
Bs: [
{ id: 4, name: 'sample4', status: 'pending' }
]
}
]
В основном получают все экземпляры B, связанные с A, где любой из B имеет статус pending
.