【发布时间】:2014-06-20 05:17:56
【问题描述】:
我有一个关于 Sails.js 版本 0.10-rc5 中的关联的问题。我一直在构建一个应用程序,其中多个模型相互关联,并且我已经到了需要以某种方式嵌套关联的地步。
分为三个部分:
首先有一些类似博客文章的内容,它是由用户撰写的。在博客文章中,我想显示相关用户的信息,例如他们的用户名。现在,这里一切正常。直到下一步:我正在尝试显示与帖子相关联的 cmets。
cmets 是一个单独的模型,称为 Comment。每一个都有一个与之关联的作者(用户)。我可以轻松地显示评论列表,但当我想显示与评论关联的用户信息时,我不知道如何使用用户信息填充评论。
在我的控制器中,我正在尝试做这样的事情:
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.
});
在我的帖子的“显示”操作中,我试图检索这样的信息(简化):
<ul>
<%- _.each(post.comments, function(comment) { %>
<li>
<%= comment.user.name %>
<%= comment.description %>
</li>
<% }); %>
</ul>
comment.user.name 将是未定义的。如果我尝试仅访问“用户”属性,例如 comment.user,它将显示它的 ID。这告诉我,当我将评论与另一个模型相关联时,它不会自动将用户信息填充到评论中。
任何人都可以正确解决这个问题:)?
提前致谢!
附言
为了澄清,这就是我在不同模型中基本建立关联的方式:
// 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'
}
【问题讨论】:
标签: node.js associations sails.js populate nested