【问题标题】:Meteor.user() doesn’t contain emails fieldMeteor.user() 不包含 emails 字段
【发布时间】:2015-07-05 14:46:44
【问题描述】:

我正在使用 account-google,我不知道为什么它不向客户发布电子邮件。

来自有关 Meteor.user() 的文档:

默认情况下,服务器会发布用户名、电子邮件和个人资料(可由用户写入)。

我只得到

Object { _id: "vK5ddWtypCewCwbSL", profile: Object }

运行 Meteor.user() 后在我的客户端上,但我想使用 Meteor.user().emails,我在这里错过了什么?

【问题讨论】:

    标签: javascript meteor


    【解决方案1】:

    如果您移除了自动发布模块,那么您需要手动发布用户集合。

    如果您使用服务器端发布方法,那么在您从服务器发布该字段之前,您将不会获得电子邮件字段。

    在服务器端使用以下代码。

    Meteor.publish("user",function(){
      return Meteor.users.find(this.userId,{
        fields:{
            "services.google.accessToken":0,
            "services.google.expiresAt":0,
            "services.google.idToken":0,
            "services.resume":0
        }
      });
    });
    

    此方法将允许您访问客户端的电子邮件字段。

    【讨论】:

    • 为什么我必须手动发布它?文档中提到的邮件不是默认发布了吗?
    • 我也通过 Tracker.autorun() 订阅了它,但我仍然不明白为什么需要将它放入 Tracker.autorun()
    • @Sawyer 如果您删除了自动发布包,那么用户收藏的自动发布也将被删除,因此您需要手动发布该收藏。
    • 已发布通过用户名/密码系统创建的用户的 _.id、个人资料和可能的电子邮件。对于通过 Google/Facebook OAUTH 创建的用户,电子邮件不会发布。
    • @fuzzybabybunny:为了获取通过 G​​oogle/Facebook OAUTH 创建的用户的 emails[0].address 字段,我应该在哪里订阅用户集合
    猜你喜欢
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2021-06-18
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多