我很遗憾在我的最后一个被清理之后又遇到了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控制台,但它返回一个空结果。有没有一些方法我在这里不了解收藏品?感谢。
编辑:我应该澄清控制台可以看该集合是否存在,它只是没有任何条目。