gpt4 book ai didi

nested - Sequelize : Ordering by Nested Associations

转载 作者:行者123 更新时间:2023-12-03 22:19:49 28 4
gpt4 key购买 nike

我有 4 个表:

ChatRooms
Participants
Messages
Users
  1. 聊天室有很多参与者
  2. 聊天室有很多消息
  3. 用户有很多消息
  4. 用户有很多参与者
  5. 参与者属于用户
  6. 消息属于用户

我正在尝试使用 Sequelize 查询 Users 并在 Participants 关系下,我希望它返回由 ChatRoom 订购的包含最新消息的 10 个参与者(本质上是用户)的列表。本质上,参与者 将是最近活跃的 ChatRoms。

//   My current code is:

User.findAll({
include: [
{
model: Participant,
include: [
{
model: ChatRoom,
include: [{ model: Message}]
}
],
order: [[ChatRoom, Message, 'id', 'DESC']]
}
],
})
// This is what my server is returning right now, 
// but the ordering is not working:
// participantId: 2 should be on top as it has a more recent message
{
userId: 1,
name: 'Kevin',
participants: [
{
participantId: 1,
userId: 1,
chatRoomId: 1,
chatRoom:
{
chatRoomId: 1,
Messages: [{
MessageId: 1,
message: 'message1',
userId: 1
},
{
MessageId: 2,
message: 'message2',
userId: 2
}]
}
},
{
participantId: 2,
userId: 1,
chatRoomId: 2,
chatRoom:
{
chatRoomId: 2,
Messages: [{
MessageId: 3,
message: 'message3',
userId: 1
},
{
MessageId: 4,
message: 'message4',
userId: 3
}]
}
}
]
}

我不知道我想要的是否可行。重要的部分是查询返回带有最新消息的 ChatRooms。我不必在 User 对象中执行此操作。如果需要,我可以在单独的查询中完成,而且我也愿意以不同的方式设计架构。

最佳答案

我发现我发布的代码确实有效。问题是,当我使用 limit(为简单起见我省略了它)时,它执行了一个子查询并导致它出现“未找到列”错误。

我尝试了 subQuery: false 但它仍然不允许我将限制与顺序结合起来。

关于nested - Sequelize : Ordering by Nested Associations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56291880/

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