如何限制从相关集合中获取的字段?

时间:2016-07-09 17:57:27

标签: loopbackjs

我有两个集合RoomMessage

的简单聊天设置

我要做的是获取所有房间,以及每个房间的最后一条消息。所以我试过了:

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){})

以上只在所有房间中提取一条消息,所以基本上我在结果集中有一百个房间和一条最新消息,而我想要每个房间中的最后一条消息。如何实现这一目标?

1 个答案:

答案 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){})