2016-08-10 2 views
0

Das klingt vielleicht sehr einfach. Es gibt eine very similar answer, aber irgendwie verhält sich mein Code abrupt und macht mich verrückt. Ich habe die letzten 4-5 Stunden damit verbracht. Jede Hilfe wäre großartig.Bedingte Operatoren in ejs

Ich baue eine Socket.IO Chat App mit Node + Express + Passport. Ich möchte die userId des aktuellen Benutzers mit der von anderen verbundenen Benutzern vergleichen. Ich möchte ihm alle Benutzer zeigen, außer sich selbst, mit denen er in Socket.IO chatten kann.

Lesen Sie Kommentare auf Code für Klarheit:

users.js

app.get('/users', function (req, res) { 

var connectedUsers = require('../app').chatUsers; // => This is an array of all logged in user and I am getting this all correctly. 

if (req.isAuthenticated()) { 

    res.render('users', { 
     currentUser: req.user, 
     users: connectedUsers, 
     title: 'OnLineUsers' 

    }); 
} 
}); 

users.ejs

<h3>CurrentUser : <%- currentUser.id %></h3> // => This Prints like **abcdefg** 


<% for(var i = 0;i < users.length ; i++){ %> 

<h3>UserID: <%- users[i].id %></h3> // => This also prints the same **abcdefg** if only one user is connected. 

<% if(currentUser.id !== users[i].id){ %> // => But this Conditional Operator does not works and show the current user himself. 

<ul> 
    <li> 
     <h3> <%= users[i].name %></h3> 
     <a href="/socket" id="chatRoomUrl"> 
      <button type="submit" class="btn-success">Chat</button> 
     </a> 
    </li> 

</ul> 

<% } %> 
<% } %> 

Vielen Dank im Voraus. Wenn es einen dummen Fehler von mir gibt, entschuldigen Sie bitte, dass ich Ihre Zeit verschwendet habe.

Antwort

0

Ihr Code ist in Ordnung. Vielleicht gibt es Platz in zwei Immobilien. Versuchen:

currentUser.id.trim() !== users[i].id.trim() 
0

ändern folgende Zeile ein, beachten Sie die Änderung:

<h3> <%= users[i].name %></h3> 

dazu:

<h3> <%- users[i].name %></h3>