Angularjs 从一个集合中获取在另一个集合中使用的值(MongoDB)

Angularjs 从一个集合中获取在另一个集合中使用的值(MongoDB),angularjs,mongodb,express,mongoose,mean-stack,Angularjs,Mongodb,Express,Mongoose,Mean Stack,我正试图创建一个小型的足球世界杯预测游戏的平均堆栈,但我有一个问题,我需要得到所有的预测游戏的用户和所有尚未单独预测 我的模式是(users模式是默认的平均堆栈): 和游戏模式: var GameSchema = new Schema({ team1_key: { type: String }, team1_title: { type: String }, team2_key: { type: String

我正试图创建一个小型的足球世界杯预测游戏的平均堆栈,但我有一个问题,我需要得到所有的预测游戏的用户和所有尚未单独预测

我的模式是(users模式是默认的平均堆栈):

和游戏模式:

var GameSchema = new Schema({
    team1_key: {
        type: String
    },
    team1_title: {
        type: String
    },
    team2_key: {
        type: String
    },
    team2_title: {
        type: String
    },
    play_at: {
        type: Date
    },
    score1: {
        type: Number
    },
    score2: {
        type: Number
    }
});
mongoose.model('Game', GameSchema);
不管怎么说,我试图实现的是获得所有预测中提到的所有游戏,以及活跃用户

我试过这样做,但不起作用:

/**
 * List of Games predicted
 */
exports.allPredicted = function(req, res) {
    Game.find({_id: {$in: Prediction.distinct('game_id')}}).sort('-created').populate('user', 'name username').exec(function(err, games) {
        if (err) {
            res.render('error', {
                status: 500
            });
        } else {
            res.jsonp(games);
        }
    });
};
怎么了?我得到一个错误:

Error: Failed to lookup view "error" in views directory "/Users/username/Projects/ProjectName/server/views"
有什么想法吗?谢谢!:)

编辑: 获得了不同的值,不确定这是否是创建方法,但无论如何都有效。。几乎:

exports.allPredicted = function(req, res) {
    Prediction.distinct('game_id').populate('user', 'name username').exec(function(err, predictions) {
        if (err) {
            res.render('error', {
                status: 500
            });
        } else {
            console.log(predictions);
            Game.find({_id: {$in: predictions }}).sort('-created').populate('user', 'name username').exec(function(err, games) {
                if (err) {
                    res.render('error', {
                        status: 500
                    });
                } else {
                    res.jsonp(games);
                }
            });

        }
    });
};

现在我需要,它也应该考虑活动用户。有什么帮助吗?

您可以在中找到您的活动用户 请求用户

所以试试看

Prediction.find({user : req.user._id}).sort('-created').populate('game_id').exec(function(err, predictions) {
    if (err) {
       res.render('error', {
           status: 500
       });
    } else {
       res.jsonp(predictions);
    }
});
这将返回用户做出的所有预测,并用关联的游戏替换游戏id

ps:我没有测试它,但我认为这是您正在寻找的请求的逻辑


ps2:查看是否也要填充用户数据

预测。distinct
是一个异步调用。
Prediction.find({user : req.user._id}).sort('-created').populate('game_id').exec(function(err, predictions) {
    if (err) {
       res.render('error', {
           status: 500
       });
    } else {
       res.jsonp(predictions);
    }
});