2015-05-20 38 views
1

我無法弄清楚爲什麼我的Meteor模板助手不能在我的Ubuntu服務器上工作,所以我只是一起砍了幾個變體,這一個結束了工作。 .locally我使用if(user[0].trusted == true),但由於某些原因,有條件不會在服務器上觸發。'=='在本地工作,但'='需要在服務器上進行比較

Handlebars.registerHelper('isTrusted', function(user_id){ 
     var user = Meteor.users.find({_id: user_id}).fetch(); 

     console.log(user, 'user'); 
     console.log(user[0].trusted); 

     if(user[0].trusted = true){ 
      console.log(user[0].trusted, 'user trusted field'); 
      return true; 
     } else { 
      false; 
     } 

}); 

爲什麼?

+0

和你正在做的是分配真正到了財產將評估爲真實。如果沒有檢查該信任是否屬實。 – epascarello

+0

=不能用於比較... ==比較和類型轉換,===直接比較,就好像相同類型 – Asheliahut

+1

'if(user [0] .trusted = true){}'等同於'user [ 0] .trusted = true; if(true){}'。 –

回答

3

你的破解是錯誤的。它會一直在,如果分支進入,主要是因爲你沒有比較,但分配:

if(user[0].trusted = true) 

這裏你分配給用戶[0] .trusted的真正價值。因爲它在if中,所以javascript正在檢查賦值是否正確。因爲它分配正確,所以它進入分支(總是)。

發送到控制檯用戶[0] .trusted的值。也許這是一個數字,或者具有其他價值。無論如何,你的代碼有一個bug,這不是服務器的問題。

+0

我把'trusted'的值作爲字符串,而不是布爾值 – redress

1

這可能是一個很好的方式來做到這一點:

Handlebars.registerHelper('isTrusted', function(user_id){ 
    return !!Meteor.users.findOne({_id: user_id, trusted: true}); 
}); 

或者,如果你將它轉換爲字符串,您可以使用'true'代替true

+0

! !返回一個布爾值而不是對象? – redress

+0

在這裏找到答案http://stackoverflow.com/questions/784929/what-is-the-not-not-operator-in-javascript – redress

相關問題