如何使用Sequelize查询多对多关系中的联接表?

时间:2019-10-02 23:48:48

标签: postgresql many-to-many sequelize.js jointable

我正在开发一个列表制作应用,您可以在其中添加节目。这些表之间具有多对多关系:

显示--->已列出显示<---列表

我想按ListedShow时间戳降序获取最新的5个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!

我还尝试遵循文档和其他一些SO建议,使用through通过源表编写查询:

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模型中,但这似乎与最佳做法背道而驰。那么,如何使用Sequelize查询最新的5 ListedShow

0 个答案:

没有答案