Есть ли способ запросить таблицу с предложением where в связанной таблице, но все же захватить все связанное содержимое в исходную таблицу с помощью Sequelize? - PullRequest
0 голосов
/ 25 декабря 2018

У меня есть две таблицы, которые связаны между собой.Таблица 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...