2014-05-22 66 views
1

我正在Mongo中運行一個查詢,以便我只能顯示帳戶ID以外的模式的所有子集合。但是,由於回調「list_data」,我得到了未定義的結果。這是我的查詢是如何寫在我的路線:Mongoose Populate回調undefined

exports.list_data = function(req, res){ 
    models.Director.find({}) 
    .populate("full_name").populate("dob").populate("favorite_movies").populate("favorite_camera") 
    .exec(function(err, list_data){ 
    res.render('users', {"dirs": list_data}); 
    }) 
}; 

這是我的模型:

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/lvsAPI'); 
var db = mongoose.connection; 
db.on('error', console.error.bind(console, 'connection error:')); 

//set schema 
var Schema = mongoose.Schema; 

var directorSchema = new Schema ({ 
    account_id: Number, 
    full_name: String, 
    dob: Date, 
    favorite_camera: String, 
    favorite_movies: String 
}); 

var Director = mongoose.model("Director", directorSchema); 

module.exports = {"Director": Director}; 

回答

1

這是簡單的沒有結果。 和您的架構錯誤使用填充()。 請參閱official docs,只是做是正確的:

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

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

var storySchema = Schema({ 
    _creator : { type: Number, ref: 'Person' }, 
    title : String, 
    fans  : [{ type: Number, ref: 'Person' }] 
}); 

var Story = mongoose.model('Story', storySchema); 
var Person = mongoose.model('Person', personSchema); 

裁判選項就是告訴貓鼬種羣期間要使用的模型。 現在 '裁判' 字段都需要填充:

Story 
.findOne({ title: 'Once upon a timex.' }) 
.populate('_creator') 
.exec(function (err, story) { 
    if (err) return handleError(err); 
    console.log('The creator is %s', story._creator.name); 
    // prints "The creator is Aaron" 
}) 

Population docs