我有两个集合Room
和Message
我要做的是获取所有房间,以及每个房间的最后一条消息。所以我试过了:
Room.find({
where:{
or:[{myId:id},{partnerId:id}]
},
order:['updatedAt DESC'],
limit:10,
skip: (page-1)*10,
include:[
{
relation:"messages",
scope:{
where:{toId:id},
limit:1,
order:['createdAt DESC']
}
}
]},function(err,rooms){})
以上只在所有房间中提取一条消息,所以基本上我在结果集中有一百个房间和一条最新消息,而我想要每个房间中的最后一条消息。如何实现这一目标?
答案 0 :(得分:0)
我不了解您的数据模型。但我认为您需要从where
删除include
条款。
Room.find({
where:{
or:[{myId:id},{partnerId:id}]
},
order:['updatedAt DESC'],
limit:10,
skip: (page-1)*10,
include:[
{
relation:"messages",
scope:{
limit:1,
order:['createdAt DESC']
}
}
]},function(err,rooms){})