Как запросить таблицу соединений в отношениях «многие ко многим» с помощью Sequelize? - PullRequest
0 голосов
/ 03 октября 2019

Я работаю над приложением для составления списков, где вы можете добавить шоу в список. Таблицы объединены отношением «многие ко многим»:

Показать ---> ListedShow <--- Список </p>

Я хочу получить последние 5 ListedShow экземпляров в порядке убыванияпо их createdAt отметке времени. Цель состоит в том, чтобы создать новостную ленту о последних действиях.

На мой взгляд, запрос секвелизации будет выглядеть так:

db.ListedShow.findAll({
  limit: 5,
  order: [
    ['created_at', 'DESC'],
  ],
  include: [{
    model: db.List,
    attributes: ['user_id', 'list_name',],
    }, 
    {
    model: db.Show,
    attributes: ['show_id', 'show_title', 'show_img',],
    },
  ],
})

... но это дает ошибку: SequelizeEagerLoadingError: List is not associated to ListedShow!

Я также пытался написать запрос через исходную таблицу, используя through, следуя документации и некоторым другим рекомендациям SO:

db.List.findAll({
  limit: 5,
  attributes: ['list_id', 'user_id', 'list_name',],
  include: [{
    model: db.Show,
    as: 'listedShow',
    through: {
      attributes: ['show_id', 'show_title', 'show_img',],
      required: true,
    },
  },
  {
    model: db.LocalUser,
    attributes: ['user_id', 'username', 'user_img', 'display_name',],
  },
  ],
})

Это предоставляет некоторую необходимую информацию, но я не могуупорядочить по отметке времени ListedShow createdAt, поэтому я не могу ограничить свой запрос самой последней 5.

Я также рассмотрел возможность добавления ассоциаций в модель ListedShow, но, похоже, это противоречит передовым методам. Итак, как мне запросить последние 5 ListedShow s, используя Sequelize?

...