2017-02-02 1 views
1

J'ai défini un PostSchema par mangouste:Une erreur de population de mangoustes

var PostSchema = new mongoose.Schema({ 
    comments: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Comment' }], 
    editor: { post: { type: mongoose.Schema.Types.ObjectId, ref: 'Post' }, codes: [{ type:mongoose.Schema.Types.ObjectId, ref: 'Code' }] } 
}); 

Je peux utiliser http://localhost:3000/#/posts/5879fc91b7a56002237f30f5 pour montrer tous les commentaires à cause de ce code:

router.get('/posts/:post', function (req, res, next) { 
    req.post.populate('comments', function (err, post) { 
     if (err) { return next(err); } 

     res.json(post); 
    }); 
}); 

Maintenant, je veux utiliser http://localhost:3000/#/posts/5879fc91b7a56002237f30f5/editor pour obtenir tout le contenu de editor, y compris codes à l'intérieur. Mais les impressions de code suivant: ["5892bbc68abcc926f7f1dd93","5892bbdf8abcc926f7f1dd94","5892bc178abcc926f7f1dd95","5892bc1b8abcc926f7f1dd96"]

router.get('/posts/:post/editor', function (req, res, next) { 
    req.post.editor.populate('codes', function (err, editor) { 
     if (err) { return next(err); } 
     console.log(JSON.stringify(editor.codes)); 
     res.json(editor); 
    }) 
}); 

Est-ce que quelqu'un sait comment remplir correctement codes?

Répondre

0

Essayez ceci, vous avez donné une référence à un modèle.

router.get('/posts/:post/editor', function (req, res, next) { 
     req.post.populate({path:'editor.codes',model:'Code'}, function (err, editor) { 
      if (err) { return next(err); } 
      console.log(JSON.stringify(editor.codes)); 
      res.json(editor); 
     }) 
    }); 
+0

J'ai essayé 'req.post.editor.populate ({chemin: 'codes', modèle: 'Code'}, la fonction (err, rédacteur en chef) ...', il reste juste imprimé ids ... –

+0

a modifié la réponse essayez-la maintenant Je ne comprends pas pourquoi écrivez-vous post.editor? –

+0

Je ne peux pas le tester maintenant.Une remarque rapide: si nous utilisons 'req.post.populate (', devrions-nous utiliser ' function (err, editor) 'ou' function (err, post) '? –