Ваша помощь работает, прежде чем ваш пользователь полностью вошли в Вы можете избежать этой ошибки, добавив guard следующим образом:.
Template.dashboard.helpers
'setUsernameToSession': ->
Session.set 'username', Meteor.user()?.username
Однако, вы действительно не должны делать это в первую очередь потому, что помощники должны быть свободны от побочных эффектов - см. раздел «Перегруженные помощники» от common mistakes.
Вместо этого вы можете просто использовать Meteor.user()?.username
в любом месте вашего кода, которому необходимо имя пользователя, а в шаблоне вы можете использовать {{currentUser.username}}
без необходимости в помощнике. Оба примера являются реактивными, поэтому нет необходимости в переменной Session
.
В вашем конкретном случае, вы хотите, чтобы предупредить пользователя, когда она входит в один из способов сделать это с autorun, который вы можете разместить в любом месте client
каталоге:.
Tracker.autorun (c) ->
# extract the username
username = Meteor.user()?.username
if username
# replace this with something better
console.log "Welcome back #{username}!"
# stop the autorun
c.stop()
Этом должно быть более надежным решением, чем использование переменной сеанса, поскольку:
- Переменные сеанса удаляются при обновлении или после закрытия браузера.
- Он будет работать в разных браузерах/машинах - я предполагаю, что вы хотите отслеживать, что пользователь зарегистрировался в любом месте, а не отслеживать, что конкретный пользователь вошел в систему снова с тем же браузером.
Спасибо за разъяснение и подробный ответ. Я прямо здесь с тобой. Но как вы продвигаетесь, если пользователь уже вышел из системы, и вы хотите отобразить приветственное сообщение, например «Добро пожаловать обратно, Дэвид!», Если пользователь снова откроет страницу. Поскольку Meteor является реактивной сессией, это единственный способ реализовать такую функцию. Пожалуйста, поправьте меня, если я ошибаюсь. –
Я обновил ответ простым предложением о том, как это сделать. Дайте мне знать, если это то, что вы ищете. –
Именно то, что я искал. Благодарю! Отличный блог, кстати, много полезной информации! –