Не удается передать объект в маршрут узла и отобразить страницу? - PullRequest
0 голосов
/ 31 января 2019

Я работаю над проектом node.js с express.js.Я запускаю маршрут и рендеринг страницы ejs и передаю ей объект team.Когда я делаю console.log(team), он отображает сведения о команде, но дает undefined значение для <%= team.member.name %>, хотя оно существует.Как я могу решить это.Я прилагаю скриншот console.log(team) и мой код ejs тоже.Пожалуйста, помогите Это встроенный скриншот

Мой файл ejs:

<% include ./partials/header%>
<% console.log("yup"+team)%>
          <table class="table-striped table table-bordered">
            <tr class="thead-dark">
              <th>Name</th>
              <th>Year</th>
              <th>Skills</th>
              <th>Leader</th>
            </tr>
                <% for(i = 0; i < team.members.length; i++){
                var member = team.members[i];%>
                <tr>
                  <td><%= member.name %></td>
                  <td><%= member.year %></td>
                  <td>
                    <ul>
                        <% for(var i = 0; i < member.skills.length; i++){ %>
                          <li>
                            <%= member.skills[i];%>
                          </li>
                          <% } %>
                    </ul> 
                  </td>
                  <td><% if(member.isLeader) { %>
                  	Yes
                  	<% } else { %>
                  	No
                  	<% } %>
                  </td>
                  </tr>
                  <% } %>
          </table>   
<% include ./partials/footer%>
и мой код маршрута:

router.get("/:id/view/:challengeid/:username", isLoggedIn, function(req, res){
  Mentor.findById(req.params.id, function(err, mentor){
    mentor.mentorChallenges.forEach(function(chall){
      var k = 0;
      for(var i = 0; i < chall.applicants.length; i ++){
        if(chall.applicants[i] == req.params.username){
          k = 1;
          break;
        }
      }
      if(k === 1){
        Team.find({username: req.params.username}, function(err, team){
          res.render("teamDetails", {team: team});
        });
      }
    });

  });
});

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019
<% if (typeof team === "undefined" ) { %> 
// do smth
<%} else {%>
// do smth
<%}%>

Согласно некоторым условиям, вы получаете team как undefined, это означает, что при выполнении запроса GET в ваш файл ejs ничего не отправляется, но в некоторых условиях выteam как defined, поэтому вы должны неявно реализовать оба случая

0 голосов
/ 31 января 2019

Полагаю, в вашем цикле for есть проблема.Вы пробовали forEach цикл?
Попробуйте использовать это:

    <% team.members.forEach(member => { %>
           <tr>
              <td><%= member.name %></td>
              <td><%= member.year %></td>
              <td>
                 <ul>
                    <% member.skills.forEach(skill => { %>
                       <li>
                          <%= skill%>
                       </li>
                     <% }); %>
                  </ul> 
               </td>
               <td><% if(member.isLeader) { %>
                  Yes
                   <% } else { %>
                  No
                   <% } %>
               </td>
          </tr>
    <% }); %>
...