我试过这个
console.log(Meteor.users.find({_id: this.userId},{fields: {'emails.address': 1}}));
在服务器端,但它显示
I20140315-12:06:08.588(6)? undefined
那么如何获取电子邮件地址等当前用户详细信息?
答案 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返回一个可以记录的对象。