TypeError: Meteor.user(. .).Services是未定义的

TypeError: Meteor.user(...).services is undefined

本文关键字:Services 未定义 Meteor user TypeError      更新时间:2023-09-26

我试图获得流星用户的Facebook ID(谁通过Facebook登录)。下面这行给我带来了麻烦:

var userID = Meteor.user().services.facebook.id;

在控制台中显示

TypeError: Meteor.user(...).services is undefined

从我的理解,这是因为用户()。服务尚未初始化。我将代码包装在if(Meteor.user())中,以确认用户已初始化。代码在按下按钮时执行,因此它肯定有足够的时间启动。当我删除自动发布功能时,这种情况就开始发生了(尽管这可能是无关的)。我还需要做些什么来使它在没有自动发布的情况下工作吗?

用以下方法解决:

Meteor.publish("getUserData", function () {
    return Meteor.users.find({_id: this.userId});
});

和它的下标。一旦订阅被填满,所有的Meteor.user.services数据就可用了。

services键默认情况下不包含在客户端的用户文档中,因为它包含安全详细信息。您可以通过方法调用来获取它,或者从服务器专门发布它并订阅它。