2016-06-27 51 views
3

我碰到下面的代碼行,我聽不懂,雖然有很多教程,讓有關的populate實例的信息卻是沒有解釋究竟它means.Here是一個例子填充貓鼬是什麼意思?

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

var PersonSchema = new Schema({ 
    name : String, 
    age  : Number, 
    stories : [{ type: Schema.ObjectId, ref: 'Story' }] 
}); 

var StorySchema = new Schema({ 
    _creator : { 
    type: Schema.ObjectId, 
    ref: 'Person' 
    }, 
    title : String, 
    fans  : [{ type: Schema.ObjectId, ref: 'Person' }] 
}); 

var Story = mongoose.model('Story', StorySchema); 
var Person = mongoose.model('Person', PersonSchema); 
Story.findOne({ title: /Nintendo/i }).populate('_creator') .exec(function (err, story) { 
if (err) .. 
    console.log('The creator is %s', story._creator.name); 
    // prints "The creator is Aaron" 
}) 
+0

你可以添加代碼到你的問題? –

+0

填充通常用於在查詢http://mongoosejs.com/docs/2.7.x/docs/populate.html時填充ref對象屬性 –

回答

0

populate()函數是mongoose用於填充參考內的數據。在你的例子中,StorySchema_creator字段,它將引用_id字段,該字段基本上是mongodb文檔的ObjectId

populate()函數可以接受一個字符串或一個對象作爲輸入。

其中字符串是需要填充的字段名稱。你的情況是_creator。貓鼬之後發現的一個文檔從mongodb的和的結果是象下面這樣

_creator: { 
    name: "SomeName", 
    age: SomeNumber, 
    stories: [Set Of ObjectIDs of documents in stories collection in mongodb] 
}, 
title: "SomeTitle", 
fans: [Set of ObjectIDs of documents in persons collection in mongodb] 

填入也可以接受對象作爲輸入。

你可以在下面找到populate()函數的文件。 http://mongoosejs.com/docs/2.7.x/docs/populate.html