gpt4 book ai didi

javascript - 按连接表顺序排列

转载 作者:行者123 更新时间:2023-12-03 22:33:31 25 4
gpt4 key购买 nike

我有一个 Duel 类型,每个 Duel 都有一个玩家列表。
这是我的查询和关系:

const duel = Duel.findByPk(id, {
include: duelRelations,
});


const duelRelations = [{
model: User,
as: 'players',
include: [{
model: DuelPokemon,
required: false,
as: 'duelPokemons',
}],
}, {
model: DuelActionLog,
required: false,
as: 'logs',
}];
关系:
// Each duel has many users
Duel.hasMany(User, {
foreignKey: 'duel_id',
as: 'players',
});
我想得到 players 数组按 createdAt 表的 duel_players 字段排序。
我尝试了 order 值的不同组合,但没有任何效果。不知道怎么定义。
任何想法?
谢谢

最佳答案

您应该使用 sequelize.col() order 选项的 findByPk 属性中指定要作为排序依据的连接表中的列。每个按条目排序是一个包含两部分(列,然后是顺序)的数组,您可以传入多个条目以按多列排序。
我将 duelRelations 移到选项中以使其更易于阅读。在您的示例中,您将 User 别名为 playersDuelPokemonduelPokemons 。请注意,您需要为每个 Model 定义这些关联。您的问题提到了您的示例中不存在的 duel_players ,但我认为您的意思是说 players.createdAt

const duel = Duel.findByPk(id, {
include: [
{
model: User,
as: 'players',
include: { // can be an object to include single table
model: DuelPokemon,
required: false,
as: 'duelPokemons',
},
},
{
model: DuelActionLog,
required: false,
as: 'logs',
},
],
order: [[sequelize.col('players.createdAt', 'DESC']],
});

关于javascript - 按连接表顺序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64370618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com