2016-09-17 100 views
0

我已经创建了下面的模式:在莫戈填充阵列

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var Player = require('./player'); 

var gameSchema = new Schema({ 

    created_at: Date, 
    nrOfCards: String, 
    players: [{ 
      sticks: String, 
      player: { 
       type: mongoose.Schema.Types.ObjectId, 
       ref: 'Player' 
      } 
     }], 

}); 

var Game = mongoose.model('Game', gameSchema); 

节省部分工作正常,并已保存的对象可能是这个样子:

"_id": "57dd11aca0c36114588fd250", 
    "nrOfCards": "3", 
    "__v": 0, 
    "players": [ 
     { 
     "_id": "57d415e527c20f3ed2416e05", 
     "age": "33" 
     }, 
     { 
     "_id": "57d417df2186d53f3d49c996", 
     "age": "73" 
     }, 
     { 
     "_id": "57d41d85ec315d4234010c7d", 
     "age": "20" 
     } 
    ] 
    }, 

后救的对象我会喜欢让它在播放器字段填充的情况下返回。这里是我的尝试:

app.post('/api/games', function(req, res) { 

     Game.create({ 
      players : req.body.activePlayers, 
      nrOfCards: req.body.nrOfCards, 
     }, function(err, game) { 
      if (err) { 
       res.send(err); 
      } else { 
       Game.findOne(game) 
        .populate('players.player') 
        .exec(function (err, newgame) { 
        if (err) return handleError(err); 
        console.log(newgame); 
         res.json(newgame); 
        }); 
      } 
     }); 
    }); 

以为.populate('players.player')应该做的伎俩,但我收到含有player只的_id的无人居住的领域。

提示赞赏。谢谢!

回答

0

使用

player: { type: Schema.Types.ObjectId, ref: 'Player' }

到您的架构。