Вот HTML:
<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
не существует, потому что электронные письма являются массивом, поэтому единственным способом может бытьMeteor.user().emails[0].address
. Использование this.userId в кавычках делает его строкой, поэтому он пытается найти пользователя с идентификатором'this.userId'
. Если вы оставите кавычки, он должен найти пользователя с вашим userId. Вы можете узнать больше о синтаксисе и семантике JS, чтобы лучше понять концепции языка. - person Jankapunkt   schedule 17.10.2017