Я новичок в Sails.js (и node).
В настоящее время я создаю приложение, в котором пользователи могут создавать сообщения в блогах и просматривать их впоследствии. Все прошло хорошо при получении сообщений на странице индекса, хотя у меня возникают проблемы, когда я пытаюсь показать имя автора.
Для этого я сделал две модели: сообщения и пользователи. Когда сообщение создается, я добавляю атрибут postedBy в модель сообщения, содержащий идентификатор пользователя, которому принадлежит сообщение.
Теперь в моем индексном представлении (где я показываю сообщения) я делаю что-то вроде этого:
<% _.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){}); - Что-то вроде этого). Я читал о Promised в документации Sail.js/waterline, хотя я почему-то не могу заставить его работать, чтобы я мог получить доступ к конкретному пользователю в каждом цикле Post.