首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从一个集合中获取另一个集合中使用的值(MongoDB)

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

Stack Overflow用户
提问于 2014-06-08 13:21:09
回答 1查看 789关注 0票数 0

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

我的模式是(用户模式是默认的均值堆栈):

代码语言:javascript
运行
复制
 /** 
 * Prediction Schema
 */
var PredictionSchema = new Schema({
    game_id: {
        type: Schema.ObjectId,
        ref: 'Game'
    },
    user: {
        type: Schema.ObjectId,
        ref: 'User'
    },
    date: {
        type: Date,
        default: Date.now
    },
    choice: {
        type: Number
    }
});

以及游戏模式:

代码语言:javascript
运行
复制
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);

不管怎么说,我想实现的是获得所有的游戏,在所有的预测和主动用户。

我试过这样做,但不管用:

代码语言:javascript
运行
复制
/**
 * 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);
        }
    });
};

怎么了?我有错误:

代码语言:javascript
运行
复制
Error: Failed to lookup view "error" in views directory "/Users/username/Projects/ProjectName/server/views"

有什么想法吗?谢谢!:)

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

代码语言:javascript
运行
复制
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);
                }
            });

        }
    });
};

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

EN

回答 1

Stack Overflow用户

发布于 2014-06-16 15:39:42

您可以在req.user中找到您的活动用户

所以试试

代码语言:javascript
运行
复制
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);
    }
});

这将返回用户所做的所有预测,并将game_id替换为相关的游戏。

ps:我不测试它,但是我认为这是你想要的请求的逻辑。

ps2 :如果您也想填充用户数据,请参见http://mongoosejs.com/docs/populate.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24106572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档