2016-08-10 21 views
0

これは本当に簡単かもしれません。 very similar answerがありますが、何とか私のコードが突然動作していて、私を狂ってしまいます。私はこの最後の4-5時間を費やしました。どんな助けも素晴らしいだろう。ejsの条件演算子

私はNode + Express + Passportを使用してSocket.IOチャットアプリケーションを構築しています。現在のユーザーのuserIdと、接続されている他のユーザーのuserIdを比較したいと思います。私はSocket.IOでチャットをするために彼以外のすべてのユーザーを彼に見せたいと思う。明確にするためのコードの

読むのコメント:

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> 

<% } %> 
<% } %> 

事前に感謝します。もし私の中に愚かな間違いがあるなら、あなたの時間を無駄にしてくれてよろしいですか?

答えて

0

コードは問題ありません。多分2つのプロパティにスペースがあります。試してみてください:

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

は変化に気づく、あなたの次の行を変更します。これに

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

を:

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