【问题标题】:Node/Express Get ExampleNode/Express 获取示例
【发布时间】:2016-09-08 13:23:17
【问题描述】:

我很好奇解决这个问题的最佳方法。

我有一条路线,如下所示

router.get('/weeks/:week', auth, function (req, res, next) {
  Game.find({ 'Week': req.params.week }, function(err, games) {
    if (err) {
        return next(err);
    }
    res.json(games);
  });
});

这行得通。它返回在参数中传递了一周的每个游戏。

现在,我有一个 Pick 收藏,每个 Pick 上都有一个 Game Id。我想在同一条路线上返回与每场比赛相关的选秀权。

如何扩展此功能以获取与我返回的游戏相关的选择?

感谢您的帮助!

【问题讨论】:

  • 用火攻击它,然后让我们知道相关的选择是什么?这是什么意思?
  • Pick 集合与 Game 集合有何关系?你只有游戏ID吗?或者你在这两个集合之间有某种参考?
  • 这是我的 PickSchema var mongoose = require('mongoose'); var PickSchema = new mongoose.Schema({ author: { type: String }, winner: { type: String }, correct: { type: Boolean }, game: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Game' }] }); module.exports = mongoose.model('Pick', PickSchema);
  • 这是我的 GameSchema var mongoose = require('mongoose'); var GameSchema = new mongoose.Schema({ Home: { type: String, required: true }, Away: { type: String, required: true }, Week: { type: Number }, Game: { type: Number }, Date: { type: String }, Time: { type: String }, HomeScore: { type: Number }, AwayScore: { type: Number }, Winner: {type: String} }); module.exports = mongoose.model('Game', GameSchema, 'games');
  • 但如果需要,它们都可以编辑/更改

标签: javascript node.js express mongoose


【解决方案1】:

您应该更新 Pick 架构,然后使用填充功能。这个例子可以帮助你

更新 PickSchema

var mongoose = require('mongoose');
var GameSchema = new mongoose.Schema({
    Home: { type: String, required: true },
    Away: { type: String, required: true },
    Week: { type: Number },
    Game: { type: Number },
    Date: { type: String },
    Time: { type: String },
    HomeScore: { type: Number },
    AwayScore: { type: Number },
    Winner: {type: String},
    pick: { type: mongoose.Schema.Types.ObjectId, ref: 'Pick' }
});
module.exports = mongoose.model('Game', GameSchema, 'games');

然后在你的路由器中使用填充功能

router.get('/weeks/:week', auth, function (req, res, next) {
    Game
    .find({ 'Week': req.params.week })
    .populate('pick')
    .exec(function (err, games) {
        if (err) {
            return next(err);
        }
        res.json(games);
    });
});

你看看mongoose populate function

注意:请不要忘记在创建游戏模型时将pick添加到游戏中

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    相关资源
    最近更新 更多