2013-02-12 60 views
1

我使用MongoDB的猫鼬ODMREST的NodeJS项目MongoDB中的ObjectId使用

我的模型模式是:

var playerSchema = new mongoose.Schema({ 
    name: String, 
    team: mongoose.Schema.Types.ObjectId 
}) 

服务器端

app.post('/players', function(req, res) { 
    Players.find(function(err, players) { 
    res.json(players); 
    }); 
}); 

响应是:

... 
{ 
    "_id": "511a6010e6ca7b0fe0af02ff", 
    "name": "player-1", 
    "team": "511a53e2e6ca7b151c09ce8d" 
} 
... 

,但我想是这样的:

{ 
    "_id": "511a6010e6ca7b0fe0af02ff", 
    "name": "player-1", 
    "team": { 
    _id: "511a53e2e6ca7b151c09ce8d" 
    name: "team-1" 
    } 
} 

我做错了什么? 或者我还没有真正理解ObjectId?

谢谢!

+1

你会想看看.populate http://mongoosejs.com/docs/populate.html – thtsigma 2013-02-12 15:57:39

+0

是的,谢谢我失去了这一步! – frx08 2013-02-12 16:07:28

回答

1

你只是提取队员文件的id文件。

因此对于每个玩家你也必须得到团队文档。

Players.find(function(err, players) { 
    for(var i in players){ 
     Team.findById(players[i].team,function(error,teams){ 
      players[i].team = teams; 
     }) 
    } 
    res.json(players); 
});