Say, je Manager
schéma:Mongoose plusieurs Remplit profondes
{
name: { type: String },
clients: [{ type: Mongoose.Schema.ObjectId, ref: 'Client'}]
}
Et, je Client
schéma:
{
name : { type String },
cars : [{ type: Mongoose.Schema.ObjectId, ref: 'Car' }],
houses: [{ type: Mongoose.Schema.ObjectId, ref: 'House' }]
}
ainsi
Et Car
et House
(leur structure n'a pas d'importance pour la question Comment puis-je remplir en profondeur plusieurs champs Client
dans l'appel .populate()
?
Qu'ai-je essayé:
Manager.find()
.populate({
path: 'users',
populate: { path: 'cars' },
populate: { path: 'houses' }
});
et il serait vraiment me surprendre si elle a travaillé (comme je l'ai Ecraser déclaré précédemment populate
clé passée à la méthode .populate()
). Mon exemple renvoie évidemment houses
champ par utilisateur - celui qui vient en dernier. Honnêtement, aucune idée, rien dans le docs non plus. Est-ce même supporté? Je sais que c'est pour «peu profonde» peupler, basé sur mon exemple:
User.populate('cars')
.populate('houses')
Qu'en est-il de la profondeur?
Certes, c'est juste 'Users.populate ({chemin: 'utilisateurs de, peupleront: {chemin: « voitures maisons '}}) '. Être ''cars houses' 'comme la liste des chemins délimités par un espace dans le niveau actuel. Au moins c'est vrai pour un seul niveau, donc ça devrait sûrement être la même chose pour n'importe quoi d'autre. –
Merci, ça aide. Ai-je oublié une explication dans les docs? – wscourge
La liste délimitée par des espaces est mentionnée quelque part au début de la documentation. Il remplace le '.populate(). Populate()' que vous avez mentionné. –