1
這裏未定義是HTML:Meteor.userId()返回登錄用戶但Meteor.user()的值在1.5流星
<div>
<span id="login-entrance">{{loginEntranceContent}}</span>
</div>
這裏是在客戶端側js代碼:
loginEntranceContent(){
if (Meteor.userId()==null) {
return 'Log in/Sign up';
} else {
Meteor.user().emails.address;
};
},
現在我確定用戶已登錄,因爲當我嘗試使用Meteor.userId()時,它將返回當前用戶的_id值。但是Meteor.user()原來是未定義的。我認爲Meteor.user()結果應該稍後自動更新。所以我等了一會兒,但它並沒有在我的Chrome瀏覽器中更新。
而且我知道這個問題與在數據準備好之前DOM呈現的事實有關。但我不知道那裏到底發生了什麼。
我已經圍繞論壇尋找答案,有一些類似的話題,但沒有人提供了一個清晰的解釋和簡單的解決方案。所以我希望爲它開闢一個新的話題是值得的。
僅供參考,以解決這個問題,我試圖讓服務器端的方法:
Meteor.users.findOne({_id:'this.userId'});
,並把它稱爲從客戶端。它仍然得到未定義的結果....
你的其他部分沒有任何回報和'Meteor.user()emails.address'does不存在的,因爲電子郵件是一個數組所以唯一的辦法可能。成爲'Meteor.user()。emails [0] .address'。在引號中使用this.userId使它成爲一個字符串,因此它試圖找到一個用戶名,該用戶的ID爲'this.userId'。如果你留下引號,它應該使用你的userId找到一個用戶。您可以閱讀更多關於JS語法和語義的內容,以提高對語言概念的理解。 – Jankapunkt
我完全忘記了email屬性是一個數組。我的愚蠢問題。非常感謝。 – cxg222