2014-05-22 2 views
1

Mongo에서 쿼리를 실행하여 계정 ID를 제외한 스키마의 모든 하위 컬렉션 만 표시 할 수 있습니다. 그러나 콜백 "list_data"의 결과로 정의되지 않습니다. 이것은 내 쿼리 내 경로로 작성하는 방법입니다몽구스 채우기 콜백 정의되지 않음

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

이 어떤 결과를 간단하지 않습니다. 스키마가 잘못 사용되었습니다. populate(). 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

관련 문제