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

时间:2014-03-15 06:12:02

标签: meteor

我试过这个

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

在服务器端,但它显示

I20140315-12:06:08.588(6)? undefined

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

2 个答案:

答案 0 :(得分:6)

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

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

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

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

console.log(email);

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

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

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

答案 1 :(得分:0)

我想你想做'找到一个'而不是找到'。 Find返回一个必须使用fetch(),forEach()或map()访问的游标。 FindOne返回一个可以记录的对象。

Documentation here