获取当前登录用户的电子邮件地址

pyp*_*ism 1 meteor

我试过这个

console.log(Meteor.users.find({_id: this.userId},{fields: {'emails.address': 1}}));
Run Code Online (Sandbox Code Playgroud)

在服务器端,但它正在显示

I20140315-12:06:08.588(6)? undefined
Run Code Online (Sandbox Code Playgroud)

那么如何获取电子邮件地址等当前用户详细信息?

Aks*_*hat 6

您需要确保发布电子邮件:

Meteor.publish(null, function() {
    return Meteor.users.find({_id: this.userId}, {fields: { emails: 1, profile: 1 } });
});
Run Code Online (Sandbox Code Playgroud)

然后你可以做(​​服务器或客户端)

var user = Meteor.user();
var email = user && user.emails && user.emails[0].address

console.log(email);
Run Code Online (Sandbox Code Playgroud)

null如果用户未登录/您的订阅尚未就绪,或者用户未设置电子邮件,则会返回.

如果您在Meteor.publish函数中使用它,则需要使用替代方法Meteor.user()并手动获取用户数据.

如果您是在来自npm模块的回调中执行此操作,则需要将回调包装在Meteor.bindEnvironment中,以确保您的回调在同一光纤中运行.通常,在没有bindEnvironment的情况下,您不能在这些回调中使用Meteor代码.