2013-10-06 5 views
1

Я делаю службу, в которой нет учетных записей пользователей, и я хочу ограничить, какую страницу я посещаю.Метеор: ненадежная переменная сеанса?

Итак, каждая страница является «ящиком», и на каждой «коробке» у меня есть куча «файлов».

Я опубликовал соответствующую информацию в сервере/publications.coffee

Meteor.publish 'files', (boxId)-> 
    console.log boxId 
    return Files.find({boxId:boxId}) 

Мой файл для «окна» имеет подписку на ручку:

@filesHandle = Meteor.subscribe 'files', Session.get('currentBoxId') 

И currentBoxId хранится в сессии переменная.

Вот сумасшедшая часть: я ожидаю, что это сработает, и это происходит в первый раз, когда я запускаю сервер. Консоль.log в первом бите кода печатает правильный идентификатор. Затем, внезапно, консольный журнал неожиданно начинает возвращать «нуль», даже когда я console.log сеанса var в консоли браузера, он возвращается правильно.

Я чувствую, что здесь есть какая-то проблема асинхронности загрузки, но я понятия не имею, что происходит.

Любые подсказки?

+1

Имейте в виду Метеор Session не сохраняется между обновления страницы, не ожидают, что стоимость будет сохранена, если вы Ctrl + R в браузере. См. Http://projectricochet.com/blog/meteor-js-performance#.UlHsaBCc5pg –

+0

Святое дерьмо, вы правы. Внезапно я понятия не имею, почему код, который я написал, работает. Когда я обновляюсь, переменная сеанса не сохраняется, но соответствующие данные все еще извлекаются! Вы знаете, как это возможно? Вот соответствующий код ... Template.boxPage.created =() -> @filesHandle = файлы Meteor.subscribe, Session.get ('currentBoxId') – Oliver

+0

Подождите, после дальнейшего изучения кажется, что моя переменная сеанса делает сохраняйте обновления страниц. Метеорит изменил способ обработки сеансов? – Oliver

ответ

0

Ах, понял это. Шаблон может быть отображен до того, как будет установлена ​​переменная сеанса. Обычно вы помещаете свои рукописи в файл main.js в область приложения, но это не работает, если подписка зависит от переменных сеанса.

я сделал следующее:

Template.boxPage.created =()-> 
    @filesHandle = Meteor.subscribe 'files', Session.get('currentBoxId') 
Смежные вопросы