我最近拿起 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