Метод заполнения в виртуальном мангусте: ничего не возвращается.

У меня проблема с определением виртуалов для моего commentSchema. В схеме комментариев у меня есть ссылка на модель «Пользователь». Я пытаюсь получить атрибут «comment.user.username». для этого я определил виртуальный атрибут «автор», где я заполняю комментарий и получаю имя пользователя, но он не возвращается. :(

КомментарийСхема:

var commentSchema = mongoose.Schema({
  title: { type: String },
  text: String,
  user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
  ....

})

Пользовательская схема:

var userSchema = mongoose.Schema({
   local : {
         username : String,
         email: String,
    ...
   })

В моем файле ejs у меня есть угловая форма ng-repeat, в которой я хочу получить доступ к атрибутам документов комментариев:

<dd data-ng-repeat="comment in comments" class="accordion-navigation">
     <a id="lastStop" href="#panel{{ $index }}">{{ comment.title }}</a>

Это работает для всех атрибутов, кроме виртуальных. Вот определение виртуального:

commentSchema.virtual('author').get(function () {
  mongoose.model('Comment').findOne({ title : this.title })
  .populate('user')
  .exec(function(err, comment) {
    if (comment.user) {
      console.log(comment.user.local.username);
      return comment.user.local.username;
    }  else {
      return "Anonymous"
    }    
  });

 }

)

Ничего не возвращается. Любые идеи?


person AnnaField    schedule 18.12.2014    source источник