在mongoose虚拟中填充方法:没有返回任何内容。

时间:2014-12-18 17:59:00

标签: angularjs node.js mongoose virtual populate

我对commentSchema的虚拟定义有疑问。在commentSchema中,我引用了" User"模型。我试着得到" comment.user.username"属性。为此我已经定义了虚拟属性" author",我在其中填充注释并获取用户名,但是没有返回。 :(

CommentSchema:

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

})

UserSchema:

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

在我的ejs-File中,我有一个角度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"
    }    
  });

 }

什么都没有归还。有什么想法吗?

0 个答案:

没有答案