我正在开发一个列表制作应用,您可以在其中添加节目。这些表之间具有多对多关系:
显示--->已列出显示<---列表
我想按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
?