我最近选择了MeteorJs并且真的很喜欢它。我已经有99%的应用程序可以使用,除了这个唠叨的错误(我已经追了两天了)。
问题是登录或更恰当地登录用户登录后或用户创建帐户时发生的情况。我的代码可以使用,但它似乎是一个时间问题。
如果我取消对Deps.autorun
的调用,则登录失败,因为它找不到房间。
但是,如果之后创建帐户失败,因为它没有用户配置文件。请注意,即使失败,我也可以刷新页面,一切正常。我已经完成了一百次代码,这必须是它。
有什么明显的东西吗?
Deps.autorun ->
if Meteor.user()
user = Meteor.user()
userId = Meteor.userId()
email = user.emails[0].address
Meteor.subscribe "rooms", email
if user.profile is undefined
if Rooms.findOne() is undefined
roomId = Rooms.insert({name: "Watercooler", ownerId: userId, inviteeEmails: [], roster: []})
else
roomId = Rooms.findOne()._id
Meteor.users.update({_id: userId}, {$set:{'profile.lastRoomId': roomId, 'profile.showGravatars': true}})
else
roomId = user.profile.lastRoomId
Meteor.subscribe "connections"
Meteor.subscribe "messages", roomId
Meteor.subscribe "last_in_room", roomId
Meteor.call 'addUserToRoster', roomId
Meteor.setInterval ->
Meteor.call 'keepalive', userId
, 5000
答案 0 :(得分:0)
您是否尝试在用户注册时创建房间?在创建用户挂钩上查看此位:http://docs.meteor.com/#accounts_oncreateuser。
答案 1 :(得分:0)
看起来很乱,为什么不在创建用户时在Meteor.methods中对服务器进行插入和更新。
我不认为你在Deps.autorun中使用1/2代码也可以获得任何收益。取出以下内容: Meteor订阅“连接”
这不需要在Deps.autorun中。这条线可能找到一个更好的家: Meteor.call'addUserToRoster',roomId
喜欢: Accounts.onCreateUser(FUNC) http://docs.meteor.com/#accounts_oncreateuser