1

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

2 回答 2

0

看起来很乱,为什么不在 Meteor.methods 中的服务器上进行插入和更新,当创建用户时。

我不认为你在 Deps.autorun 中有 1/2 的代码也不会获得任何好处。取出以下内容: Meteor.subscribe "connections"

这不需要在 Deps.autorun 中。而这条线可能会找到更好的归宿:Meteor.call 'addUserToRoster', roomId

喜欢在:Accounts.onCreateUser(func) http://docs.meteor.com/#accounts_oncreateuser

于 2013-12-15T04:48:13.400 回答
0

您是否尝试在用户注册时创建房间?在创建用户挂钩上查看这一点:http: //docs.meteor.com/#accounts_oncreateuser

于 2013-11-24T14:58:08.037 回答