EJS для цикла и оператора If не отображают правильное значение

#javascript #node.js #mongodb #ejs

#javascript #node.js #mongodb #ejs

Вопрос:

Я создаю приложение, которое позволит пользователям нажимать на кнопку, и когда они вернутся на страницу, появится сообщение с надписью «Уже заинтересовано». Когда я отображаю страницу, она пропускает оператор if в цикле for и отображает оператор else. Что я делаю не так?

Ниже приведен мой код и текущий вывод.

 <% for(var i=0; i < userInterests.length; i  ) { %>
   <% if ((username == userInterests[i].username)  amp;amp; (postID == userInterests[i].post_id)){ %> 
      <p>Already interested</p>
      <% break; %> 
   <% } else { %> 
      <form action="/jobs/interested/<%= post._id %>" method='POST'>
         <button type="submit" class="btn btn-info">I'm interested</button>
      </form>
      <% break; %> 
   <% } %> 
<% } %>
 

текущий вывод

Запись MongoDB

Комментарии:

1. Ему не нравится проблема с EJS. В противном случае он бы не компилировался. Попробуйте записать все значения в if инструкции и просмотреть их значения в цикле. Это даст вам четкое представление о том, почему ваше if утверждение оценивается как ложное.

2. Чтобы ваша логика была более надежной в js, рассмотрите возможность использования === вместо == .

3. Я уже зарегистрировал их значения, и они соответствуют записи в базе данных. Есть ли проблема с логикой моего кода?

Ответ №1:

Логическая проблема, вы тестируете username и postID только со значениями userInterests[0].username и serInterests[0].post_id поскольку у вас есть оператор break; в ваших 2 условиях, вот решение проблемы :

 <% var userInterested = false %> 
<% for(var i=0; i < userInterests.length; i  ) { %>
   <% if ((username == userInterests[i].username)  amp;amp; (postID == userInterests[i].post_id)){ %> 
          <% userInterested = true; %>
          <% break; %> 
   <% } %>
<% } %>
<% if (userInterested) { %> 
   <p>Already interested</p>
<% } else { %> 
   <form action="/jobs/interested/<%= post._id %>" method='POST'>
      <button type="submit" class="btn btn-info">I'm interested</button>
   </form>
<% } %>