Javascript 显示Meteor.user()

Javascript 显示Meteor.user(),javascript,meteor,Javascript,Meteor,我有这个模板: <template name="index"> {{#if currentUser} {{userid}} {{/if}} </template> 及 最后一个错误是: 未捕获类型错误:无法读取未定义的属性“\u id”最简单的方法是使用{{currentUser.\u id} Meteor.user()。\u id正确。问题是,当您加载页面时,最初数据不可用,Meteor.user()将为空,直到建立DDP连接并让您的浏览器登录(这需要

我有这个模板:

<template name="index">
  {{#if currentUser}
    {{userid}}
  {{/if}}
</template>

最后一个错误是:
未捕获类型错误:无法读取未定义的属性“\u id”

最简单的方法是使用
{{currentUser.\u id}

Meteor.user()。\u id
正确。问题是,当您加载页面时,最初数据不可用,
Meteor.user()
将为空,直到建立DDP连接并让您的浏览器登录(这需要几百毫秒)<代码>Meteor.user()&&Meteor.user()。\u id来更正此错误

这两个
Meteor.user()。\u id
之间的区别在于,当加载模板时,您将传递加载的第一个静态值。即使
Meteor.user()
发生了变化,或者您注销了,它仍将保持这种状态


当您传递一个
函数时
会告诉助手可以重新计算该函数,如果有任何响应性更改,它将更新。

是的,它是。我知道。但我想了解其中的区别。你在我回答后的1分钟内编辑了你的答案并发表了评论。给我一些来适应你的新问题@torayeff我已经更新了答案,但是
Template.index.helpers({userid:Meteor.userid()})似乎work@VamsiV这是不正确的。我在回答中提到,它并不总是正确的,因为它不是反应性的。例如:如果您在使用同一模板时注销,它仍会显示您已登录。如果你以其他人的身份登录,它会说你是以第一人称登录的。如果将其嵌套在方法中,则在更改用户或注销时,它始终是正确的。如果直接传递
Meteor.userId()
,则传递的是静态值,而不是可以重新计算的
函数。
Template.index.helpers({
    userid: function() {
        return Meteor.user()._id;
    }
});
Template.index.helpers({
    userid: Meteor.user()._id
});