Szukaj…


Składnia

  • Query.populate (ścieżka, [wybierz], [model], [dopasuj], [opcje])

Parametry

Parametr Wyjaśnienie
ścieżka < Object, String > albo ścieżka do wypełnienia, albo obiekt określający wszystkie parametry
[Wybierz] < Obiekt, Ciąg > Wybór pola dla zapytania o populację (można użyć '-id' aby uwzględnić wszystko oprócz pola id )
[Model] < Model > Model, którego chcesz użyć dla populacji. Jeśli nie zostanie określony, wypełnia wyszukiwanie modelu według nazwy w polu referencyjnym schematu.
[mecz] < Obiekt > Warunki dla populacji
[opcje] < Obiekt > Opcje zapytania o populację (sortowanie itp.)

Prosty przykład zaludnienia mangusty

.populate() w Mongoose pozwala zapełnić odwołanie, które masz w bieżącej kolekcji lub dokumencie, informacjami z tej kolekcji. Poprzednie może wydawać się mylące, ale myślę, że przykład pomoże usunąć wszelkie nieporozumienia.

Poniższy kod tworzy dwie kolekcje, User i Post:

var mongoose = require('mongoose'),
  Schema = mongoose.Schema

var userSchema = Schema({
  name: String,
  age: Number,
  posts: [{ type: Schema.Types.ObjectId, ref: 'Post' }]
});

var PostSchema = Schema({
  user: { type: Schema.Types.ObjectId, ref: 'User' },
  title: String,
  content: String
});

var User = mongoose.model('User', userSchema);
var Post = mongoose.model('Post', postSchema);

Gdybyśmy chcieli zapełnić wszystkie posty dla każdego użytkownika, gdy my .find({}) wszystkich użytkowników, moglibyśmy wykonać następujące czynności:

User
  .find({})
  .populate('posts')
  .exec(function(err, users) {
    if(err) console.log(err);
    //this will log all of the users with each of their posts 
    else console.log(users);
  }) 


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow