Sous-sous-sous-document Mongoose
J'ai cette configuration dans mon MongoDB
Éléments:
title: String
comments: [] //of objectId's
Commentaires:
user: ObjectId()
item: ObjectId()
comment: String
Voici ma Mangouste schéma:
itemSchema = mongoose.Schema({
title: String,
comments: [{ type: Schema.Types.ObjectId, ref: 'comments' }],
});
Item = mongoose.model('items', itemSchema);
commentSchema = mongoose.Schema({
comment: String,
user: { type: Schema.Types.ObjectId, ref: 'users' },
});
Comment = mongoose.model('comments', commentSchema);
C'est là où je obtenir mes articles ainsi que les commentaires:
Item.find({}).populate('comments').exec(function(err, data){
if (err) return handleError(err);
res.json(data);
});
Comment puis-je remplir les commentaires de tableau avec de l'utilisateur? Étant donné que chaque commentaire a un utilisateur ObjectId()?
source d'informationauteur iamjonesy
Vous devez vous connecter pour publier un commentaire.
Comme un exemple complet d'appel renseigner sur les objets du résultat:
L'appel à
.remplir()
dans la forme invoqué à partir du modèle prend soit un document ou un tableau, c'est le premier argument. Si vous parcourez les résultats obtenus pour chaque élément et de les appeler remplir de cette façon sur chaque "commentaires" de la matrice. Le "chemin" indique la fonction de ce qu'il s'accorde.Cela se fait à l'aide de la "async" version de forEach, de sorte qu'il est non-bloquante, mais généralement, après toutes les manipulations de tous les éléments de la réponse ne sont pas seulement peuplée avec des commentaires, mais les commentaires eux-mêmes liées à "utilisateur" détails.
Plus simple
D'ajouter une méthode qui personnes peuvent vouloir les utiliser afin de sélectionner uniquement les champs particuliers de la sous-documents, vous pouvez utiliser le suivant "sélectionnez" syntaxe: