2015-01-29 5 views
3

При использовании заполнения мангусты вы можете вернуть документ, но это не экземпляр объекта, где определены ваши методы схемы.mongoose populate как объект объекта

var tweetSchema = new mongoose.Schema({ 
    owner: { type: Schema.Types.ObjectId, ref: 'User' }, 
    message: { type: String }, 
}); 

var userSchema = new mongoose.Schema({ 
    email: { type: String, unique: true, lowercase: true }, 
}); 

userSchema.methods.test = function(){ 
    return 'test' 
} 

Tweet.findOne({}).populate('user').exec(function(err,tweet){ 
    console.log(tweet.user.test); 
}); 

Это приведет к ошибке «Не удается прочитать свойство„userTwit“неопределенных», как tweet.user только хэш, а не экземпляр документа. Есть ли способ заставить население вернуть экземпляр документа ???

Что было бы хорошим способом сделать что-то подобное возможно?

ответ

1

Если вы не используете lean(), заполненные поля : экземпляры doc.

Похоже, ваше поле пользователя в tweetSchema называется owner, не user, так что это должно работать:

Tweet.findOne({}).populate('owner').exec(function(err, tweet){ 
    console.log(tweet.owner.test()); 
}); 
Смежные вопросы