У меня возник вопрос относительно ассоциаций в Sails.js версии 0.10-rc5. Я создаю приложение, в котором несколько моделей связаны друг с другом, и я пришел к точке, где мне нужно как-то связать ассоциации.
Там три части:
Сначала там что-то вроде сообщения в блоге, которое написано пользователем. В сообщении в блоге я хочу показать соответствующую информацию о пользователе, такую как имя пользователя. Теперь все отлично работает. До следующего шага: я пытаюсь показать комментарии, связанные с этим сообщением.
Комментарии представляют собой отдельную модель под названием Комментарий. Каждый из них также имеет автора (пользователя), связанного с ним. Я могу легко показать список комментариев, хотя, когда я хочу отображать информацию пользователя, связанную с комментарием, я не могу понять, как заполнить комментарий информацией пользователя.
В моем контроллере я пытаюсь сделать что-то вроде этого:
Post
.findOne(req.param('id'))
.populate('user')
.populate('comments') // I want to populate this comment with .populate('user') or something
.exec(function(err, post) {
// Handle errors & render view etc.
});
В действии "show" моего сообщения я пытаюсь получить информацию, подобную этой (упрощенной):
<ul>
<%- _.each(post.comments, function(comment) { %>
<li>
<%= comment.user.name %>
<%= comment.description %>
</li>
<% }); %>
</ul>
Однако comment.user.name будет undefined. Если я попытаюсь просто получить доступ к свойству user, например comment.user, он покажет его ID. Который говорит мне, что он не автоматически заполняет информацию пользователя комментарию, когда я связываю комментарий с другой моделью.
Любые любые идеалы, чтобы решить это правильно:)?
Спасибо заранее!
P.S.
Для пояснения, вот как я в основном установил ассоциации в разных моделях:
// User.js
posts: {
collection: 'post'
},
hours: {
collection: 'hour'
},
comments: {
collection: 'comment'
}
// Post.js
user: {
model: 'user'
},
comments: {
collection: 'comment',
via: 'post'
}
// Comment.js
user: {
model: 'user'
},
post: {
model: 'post'
}