Удалить префикс имени таблицы в результате запроса на присоединение - PullRequest
0 голосов
/ 28 декабря 2018

Используя nodejs (10.15.0), sequelize (4.42.0) и MySQL, я пытаюсь удалить путь таблицы из результата в запросе соединения.

Table1
    .findAll({
      attributes: ['id', 'name', 'other'],
      include: [{
        attributes: ['code_id'],
        model: Table2,
        nested: false,
        required: true,
      }],
      raw: true,
    })

Результат запроса

[
  {
    "id": 1,
    "name": "stuff",
    "other": true,
    "table2.code_id": 1,
  }
]

Ожидается, что произойдет

      [
  {
    "id": 1,
    "name": "stuff",
    "other": true,
    "code_id": 1,
  }
]

1 Ответ

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

Удалить raw: true, - он не позволяет Sequelize анализировать результаты в объектах.Если вы не хотите использовать экземпляр модели, вам нужно написать собственный анализатор для результатов.

Обратите внимание, что он будет разбираться в следующую структуру ("table2" будет свойством):

[
  {
    "id": 1,
    "name": "stuff",
    "other": true,
    "table2": {
      "code_id": 1,
    }
  }
]

В качестве альтернативы вы можете использовать псевдоним для дочерней строки, но учтите, что он будет добавлен в dataValues только в том случае, если вы создадите виртуальное поле, которое соответствует ему.

Table1
.findAll({
  attributes: [
    'id', 'name', 'other',
    [sequelize.col('table2.code_id'), 'code_id'], // aliased here
  ],
  include: [{
    attributes: [],
    model: Table2,
    required: true,
  }],
  raw: true,
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...