2014-02-18 4 views
0

Я вызываю обновление на стороне клиента Meteor.users для обновления профиля, и я заметил, что он попал в маршрутизатор после обновления. Я понимаю, что Meteor.user() реагирует, и поскольку я обновляю его, Meteor будет соответствующим образом обновляться. Но я думаю, я не уверен, почему он попадает в маршрутизатор, особенно когда я не получаю никаких данных пользователя на этой странице. Вот мое обновление:Meteor User update calls router

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

Это просто потому, что я вызываю Meteor.user() в переднем плане? – ZDixon

ответ

1

Это четко не документировано, но before крюка железного маршрутизатора является реактивным. Обычно это то, что вы хотите, но я вижу, как это будет раздражать, если вы обновите профиль пользователя. Я думаю, что простым решением является поиск Meteor.userId() вместо Meteor.user(). Это выполняет то же самое, но идентификатор не изменится при обновлении профиля пользователя.

+0

Делает смысл, это сработало. благодаря – ZDixon