Meteor 使用用户名值设置会话
我尝试查询当前登录的用户名,并将该值设置为会话。最后,它似乎在工作,但在浏览器控制台中我得到以下异常:Meteor 使用用户名值设置会话,meteor,coffeescript,Meteor,Coffeescript,我尝试查询当前登录的用户名,并将该值设置为会话。最后,它似乎在工作,但在浏览器控制台中我得到以下异常:模板帮助程序中的异常:TypeError:无法读取未定义的属性“username” Template.dashboard.helpers 'setUsernameToSession': -> user = Meteor.users.findOne(Meteor.userId()) Session.set 'username', user.username 这是我的第一
模板帮助程序中的异常:TypeError:无法读取未定义的属性“username”
Template.dashboard.helpers
'setUsernameToSession': ->
user = Meteor.users.findOne(Meteor.userId())
Session.set 'username', user.username
这是我的第一个问题,我是一个流星新手。提前感谢您。在用户完全登录之前,您的助手正在运行。您可以通过添加类似于这样的选项来避免错误: 然而,你真的不应该一开始就这样做,因为帮手应该是没有副作用的——请参阅本手册的“过度工作的帮手”一节 相反,您可以在代码中需要用户名的任何地方使用
Meteor.user()?.username
,在模板中,您可以使用{{currentUser.username}
,而无需帮助。这两个示例都是被动的,因此不需要会话
变量
在您的特定情况下,您希望在用户登录时提醒她。一种方法是使用一个可以放置在
客户机
目录中任何位置的:
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()
这应该是比使用会话变量更可靠的解决方案,因为:
感谢您的澄清和详细回答。我就在你身边。但是,如果用户已经注销,您希望显示一条欢迎回来的消息,如
欢迎回来,David代码>如果用户重新打开页面。因为Meteor是被动的,所以会话是实现这种功能的唯一方法。如果我错了,请纠正我。我用一个简单的建议更新了答案。让我知道这是否是你要找的。正是我要找的。谢谢!顺便说一句,很棒的博客,很多有用的信息!
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()