【发布时间】:2014-04-22 14:39:12
【问题描述】:
我对 Sails.js(和节点)场景很陌生。
目前我正在创建一个应用程序,用户可以在其中创建博客文章并在之后查看它们。检索索引页面上的帖子一切顺利,尽管我在尝试显示作者姓名时遇到了麻烦。
为了实现这一点,我制作了两个模型:帖子和用户。创建 Posts 后,我向 Post 模型添加了一个“postedBy”属性,其中包含该帖子所属用户的 ID。
现在,在我的索引视图(我正在显示帖子的位置)中,我正在做这样的事情:
<% _.each(posts, function(post) { %>
<a href="/post/show/<%= post.id %>">
<div class="post" data-id="<%= post.id %>" data-model="post">
<div class="row panel-body">
<div class="col-xs-7">
<h3><%= post.title %></h3>
<span class="date">By <%= post.postedBy %> <span class="date-nicely"><%= post.createdAt %></span></span>
</div>
<div class="col-xs-4">
<!-- Other markup -->
</div>
</div>
</div>
</a>
<% }); %>
这里的一切都正常工作。虽然我想通过使用“postedBy”属性搜索用户的数据来访问它,但我可以显示他们的名字,也许还有其他东西。我不想将发布者的姓名直接存储到 Post 模型中,因为用户名会随时更改,并且应该直接链接到用户名。
'index': function(req, res, next) {
var customerID = req.session.User.customerID;
Post.find()
.where({ customerID: customerID })
.limit(5)
.sort('createdAt DESC')
.done( function foundPosts(err, posts) {
if ( err ) {
return next(err);
}
res.view({
posts: posts,
layout: req.session.layout
});
}
);
},
在我的控制器中,我尝试遍历从 MongoDB 获得的帖子(通过使用 Post.find().limit(5).sort('createdAt DESC').done(function(err, posts){ }); - 像这样的东西)。我在 Sail.js / waterline 文档中阅读了有关 Promised 的内容,尽管我无法让它工作,以便我可以在每个 Post 循环中访问特定的用户。
【问题讨论】:
-
这是我转向sails.js 0.10版的原因之一。模型关联非常有用。
标签: mongodb model sails.js waterline nested-queries