Как я могу получить выходные данные INNER JOIN в массиве? - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть этот запрос SQL

 '(SELECT “A”.”id" AS “aId”, “A”.”name”, “A”.”updatedAt" AS “aUpdatedDate”, “B”.”name” AS “b.name”, “B”.”status” AS “b.status”,  FROM “A” INNER JOIN “B” ON “A”.”id" = “B”.”a_id” WHERE EXISTS (SELECT “status” FROM “B” WHERE “B”.”a_id” = “A”.”id" AND “B”.”status" IN (‘pending’, ‘failed’))) OFFSET ? LIMIT ?’;

Это возвращает необходимые данные, но проблема в том, что я хотел бы получить данные в этом формате.Это ожидаемый результат:

{
    aid: 1,
    name: 'nameOne',
    aUpdatedDate: '2018-09-10',
    Bs: [
        {
             name: 'b-one',
             status: 'completed'
        },
        {
             name: 'b-two',
             status: 'pending'
        }
    ]
}

, но вместо этого выход отделяет каждый экземпляр B, который в свою очередь дублирует A, которые возвращаются.Фактический возвращаемый результат выглядит следующим образом:

{
    aid: 1,
    name: 'nameOne',
    aUpdatedDate: '2018-09-10',
    'b.name': 'b-one',
    'b.status': 'completed'
},
{
    aid: 1,
    name: 'nameOne',
    aUpdatedDate: '2018-09-10',
    'b.name': 'b-two',
    'b.status': 'pending'
},

. Для некоторого контекста вы можете проверить ссылку StackOverflow , которая объясняет, почему я использую предложение WHERE EXISTS и дляНемного предыстории исходной проблемы.

1 Ответ

0 голосов
/ 28 декабря 2018

Я думаю, что вы используете raw : true, либо удалите его, либо сделайте его ложным:

sequelize.query('SELECT...', { type: sequelize.QueryTypes.SELECT , raw : false }).then(results => {
  console.log(results)
})

И вам пора.

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