流星:订阅收集不提供任何数据

时间:2016-03-27 15:48:12

标签: meteor publish subscribe

我很遗憾在我的最后一个被清理之后又遇到了Meteor的另一个问题......我怀疑我在这里错过了一些思考,但我不确定。

我正在尝试根据他们的Steam个人资料创建一个用于保存用户信息的集合。我在lib / collections.js中定义了这样的集合:

userInfoList = new Mongo.Collection('publicUserInfo');

每当用户通过oauth使用他们的Steam帐户登录时,我的lib / server / common.js中会调用此函数:

Accounts.onCreateUser(function(options, user){
    var steamId = user.services.steam.id;
    var result = getInfoOfUser(steamId); // Function that returns a json with a SteamID's info from Steam API

    var personaNameU = result.displayName;
    var profileLinkU = result.link;
    var avatarUrlU = result.avatar;

    userInfoList.insert({userId: user._id, steamId64: steamId, personaName: personaNameU, profileLink: profileLinkU, avatarUrl: avatarUrlU});

    console.log('Created User with id ' + user._id + ' and Steam link ' + profileLinkU);

    return user;
  }
);

控制台消息使用配置文件链接成功触发,因此我知道该功能正常工作。该文档应插入集合中...它不会引发任何错误。然后我尝试发布数据并在我的profile.js页面中订阅它:

if (Meteor.isClient){
    Meteor.subscribe('userInfoPublic');

    Template.profile.helpers({
        'getName': function(){
            var username = userInfoList.find().personaName; // Only works when one object is passed... once I change the publish requirements only one will be passed
            return username;
        },
        'getPic': function(){
            var avatarUrl = userInfoList.find().avatarUrl; // Same as above
            return avatarUrl;
        }
    });
}

if (Meteor.isServer){
    Meteor.publish('userInfoPublic', function(){
        return userInfoList.find();
    })
}

注意我只是临时返回userInfoList.find()进行调试...但是它和userInfoList.find({userId:this.userId})都没有返回任何内容。我使用userInfoList.find()检查Chrome控制台,但它返回一个空结果。有没有一些方法我在这里不了解收藏品?感谢。

编辑:我应该澄清控制台可以该集合是否存在,它只是没有任何条目。

0 个答案:

没有答案