Meteor用户更新呼叫路由器

时间:2014-02-18 19:17:10

标签: javascript meteor

我在Meteor.users客户端调用更新来更新配置文件,我注意到它在更新后命中了路由器。我知道Meteor.user()是被动的,因为我正在更新它,Meteor会相应更新。但我想我不确定为什么它会击中路由器,特别是当我没有在该页面上获得任何用户数据时。这是我的更新:

Meteor.users.update(Meteor.userId(), {$addToSet: {'profile.collection': @id}})

完成路线代码

Meteor.startup ->
  Session.setDefault 'subpage', ''

Router.configure
  layoutTemplate: "layout"
  loadingTemplate: "loading"

Router.before ->
  routeName = @route.name
  if Meteor.user() or Meteor.loggingIn()
    if _.include(["index"], routeName) then Router.go('collection')
    Session.set 'currentPage', routeName
  else
    if routeName isnt 'index' then Router.go 'index'


Router.map ->
  @route "index",
    path: "/"
  @route "collection"
  @route "discover"
  @route "playlists"
  @route "playlist",
    path: "/playlists/:_id"
    data: ->
      # Playlists.findOne(@params._id)

1 个答案:

答案 0 :(得分:1)

没有明确记录,但铁路由器的before挂钩是被动的。通常这是你想要的,但我可以看到如果你更新用户的个人资料会如何烦人。我认为一个简单的解决方案是寻找Meteor.userId()而不是Meteor.user()。这样可以完成同样的事情,但是当用户的个人资料更新时,id不会改变。