2013-02-12 7 views
1

J'utilise MongoDB avec Mongoose ODM pour mon NodeJS projet REST:MongoDB utilisation ObjectId

mon modèle schéma est:

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

et côté serveur:

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

la réponse est:

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

mais je veux quelque chose comme:

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

Ce que je fais mal? ou je n'ai pas vraiment compris l'ObjectId?

Merci!

+1

Vous voulez vérifier .populate http://mongoosejs.com/docs/populate.html – thtsigma

+0

Ouais merci j'avais perdu cette étape! – frx08

Répondre

1

Vous ne récupérez que le document des joueurs ayant l'ID du document d'équipe.

Pour chaque joueur, vous devez également obtenir un document d'équipe.

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); 
}); 
Questions connexes