Поиск…


Синтаксис

  • Query.populate (путь, [select], [model], [match], [options])

параметры

параметр объяснение
дорожка < Object, String > либо путь для заполнения, либо объект, определяющий все параметры
[Выбрать] < Object, String > Выбор поля для запроса на выборку (можно использовать '-id' для включения всего, кроме поля id )
[Модель] < Модель > Модель, которую вы хотите использовать для популяции. Если не указано, populate будет искать модель по имени в поле ref Schema.
[матч] < Объект > Условия для населения
[опции] < Object > Параметры для запроса населения (сортировка и т. Д.)

Пример простого заполнения мангусты

.populate() в Mongoose позволяет вам заполнить ссылку, содержащуюся в вашей текущей коллекции или документе, с информацией из этой коллекции. Предыдущее может показаться запутанным, но я думаю, что пример поможет устранить любую путаницу.

Следующий код создает две коллекции: User and 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);

Если мы хотим заполнить все сообщения для каждого пользователя, когда мы .find({}) всех пользователей, мы можем сделать следующее:

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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow