У меня проблема с определением виртуалов для моего 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"
}
});
}
)
Ничего не возвращается. Любые идеи?