我想写一个简单的方法,将返回登录用户的电子邮件(或任何其他字段)。我有自动发布关闭,但每当我尝试访问Meteor.user()在我的displayField方法,我得到未定义。但是,如果我编写一个通用函数(在Meteor之外),它可以访问它并显示它很好......我做错了什么?无法访问流星Meteor.methods中的Meteor.user()
Meteor.methods({
displayEmail: function() {
var user = Meteor.user();
if (!user)
throw new Meteor.Error(401, "you need to be logged in");
console.log(user.emails[0].address);
return user.emails[0].address;
}
});
我的客户端功能:
Template.hello.greeting = function() {
var output = Meteor.call('displayEmail', function(error,id) {
if (error)
return alert(error.reason);
});
return output;
};
我的模板: ...
{{greeting}}
...
所以就像我说的,在执行console.log(user.emails [0]。地址)工作得很好,但我在我的模板中得到一个空白...
你可以发布你的代码和你正在使用什么版本的流星?这在0.6.6.3上适合我。 –
您对'Meteor.call'的调用是异步的,这就是'output'为空的原因。您正在查找的电子邮件地址在您的回拨中以'id'提供。为了将其纳入您的模板,请看看这些类似的问题w /答案:http://stackoverflow.com/questions/16540328/meteor-template-helper-conditional-returns-false-consistently和http:// stackoverflow。 COM /问题/ 16632050 /流星返回异步功能到车把模板。 –
我有一种感觉,它与此有关......你有任何链接来阅读关于异步/同步吗? –