一個簡單的 Mongoose 填充示例

Mongoose 中的 .populate() 允許你使用該集合中的資訊填充當前集合或文件中的引用。前一個可能聽起來令人困惑,但我認為一個例子將有助於消除任何混亂。

以下程式碼建立了兩個集合,User 和 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);

如果我們想要為所有使用者填充每個使用者的所有帖子,我們可以執行以下操作:

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);
  })