Node.js 使用mongoose从mongoDB中的两个集合中筛选文档

Node.js 使用mongoose从mongoDB中的两个集合中筛选文档,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有两个收藏:“信息”和“组信息地图”_我存储在组消息映射中的消息集合的id列。如果我正在删除组消息映射条目中的一小部分,那么只有我试图获取的两个集合中剩余的公共条目,但得到的响应为空。以下是我的方法: getLimitedMessages(receiverId, senderId, page, size, callback) { var messages = []; GroupMessageMap.find({ groupId: receiverId,

我有两个收藏:“信息”和“组信息地图”_我存储在组消息映射中的消息集合的id列。如果我正在删除组消息映射条目中的一小部分,那么只有我试图获取的两个集合中剩余的公共条目,但得到的响应为空。以下是我的方法:

getLimitedMessages(receiverId, senderId, page, size, callback) {
    var messages = [];
    GroupMessageMap.find({
            groupId: receiverId,
            userSId: senderId
        })
        .skip(parseInt(((size * page) - size)))
        .limit(parseInt(size))
        .sort({ $natural: -1 })
        .exec(function(err, maps) {
            if (err) {
                console.log('err is maps ', err);
            } else {
                maps.map((map) => {
                    Message.find({
                        _id: map.messageId
                    }, function(err, message) {
                        if (err) {
                            console.log('messages err ', err);
                        } else {
                            messages.push(message);
                        }
                    });
                });
            }
        });
    console.log('filtered messages: ' + messages);
};

为什么不使用$lookup或populate

地图。地图((地图) 不会等待异步db调用,在得到db响应之前,您将得到空响应

请参考这些链接


是否映射等待异步db调用?不是,因此我得到的是空数组。我尝试使用async和wait,但也得到了此错误:“ReferenceError:regeneratorRuntime未定义”。我也安装了所有相关的依赖项和devDependencies。我尝试过填充,但不起作用。让我也尝试$lookup。