Sequelize - 内部限制和订购包括

时间:2017-03-28 06:05:35

标签: mysql sequelize.js

我在Sequelize中关联了3个表。 enter image description here 使用findOne我试图检索一个房间,所有消息限制为10,并通过message_timestamp订购,但无济于事。

models.Room.findOne({
where: {
  room_id: room_id
},
include: [ {
  model: models.Message,
  limit: 10,
  offset: 0,
  order: 'message_timestamp DESC'
} ] })

以上代码检索所有消息(不限于10),并且不根据message_timestamp进行排序。

有解决方案吗?我怎么能这样做呢?

谢谢。

1 个答案:

答案 0 :(得分:2)

You cannot limit in an includes statement in sequelize.您只能从顶级限制。考虑到这一点,你可以尝试这样的事情:

models.Message.findAll({
  include [{
    model: models.Room,
    where: { room_id: room_id }
  }]
  limit: 10,
  offset: 0,
  order: 'message_timestamp DESC'
})

由于includeINNER JOIN,因此它只会检索关联room_id = room_id

的消息