Sails.js - передача данных в режим просмотра

Недавно я начал изучать, как использовать Sails.js, и я столкнулся с небольшой проблемой.

У меня есть модель, называемая Заявитель, следующим образом:

module.exports = {

  attributes: {     
     name: {
      type: 'STRING',
      required: true
     },

     email: {
      type: 'STRING',
      required: true
     }

  }

};

Я построил действие индекса для возврата всех экземпляров модели Заявителя:

module.exports = {
    index: function(req, res) {
        Applicant.findAll().done(function(err, applicants) {
            res.view({
                apps: applicants
            });
        });
    }
};

И это представление, которое я использую:

<section id="applicants">
    <h1>List of applicants</h1>

    <ul>
        <% for (applicant in apps) { %>
        <li><%= applicant.name %> <%= applicant.email %></li>
        <% } %>
    </ul>
</section>

Тем не менее, когда я загружаю соответствующий URL-адрес, я не вижу, как отображаются мои данные.

Я прочитал документацию Sails.js, но я не могу найти что-то не так с моим кодом.

Было бы здорово, если бы кто-то помог мне решить эту проблему.

Спасибо!

Ответ 1

Попробуйте

<%= apps[applicant].name %>

Это похоже на цикл цикла for. applicant - это индекс в массиве apps.

Изменить:. Лучше всего использовать массив javascript, встроенный в метод forEach, потому что таким образом вы избегаете циклического перемещения по элементам, унаследованным от типа apps (например, элементы, назначенные таким образом: apps.__proto__.foo = {name: "bar"} или Array.prototype.foo2 = {name: "pi222"}).

<% apps.forEach(function(applicant)  { %>
    <li><%= applicant.name %> <%= applicant.email %></li>
<% }); %>

P.S. Конечно, этот метод javascript (forEach) не будет работать в IE <= 8 (если вы считаете, что используете его в браузере). Но мы находимся внутри NodeJs, который построен на вершине двигателя V8. Так что это все равно будет работать.