Железный роутер data findOne возвращается неопределенным
У меня есть streams
настройка публикации и подписки, но по какой-то причине, если я сделаю следующее в моем маршруте, представление не получит данных:
Router.route '/seasons/:season/episodes/:episode',
name: 'episode'
action: ->
@render(
'episode',
data: ->
Streams.findOne({season: @params.season, episode: @params.episode})
)
Если я регистрирую параметры, они там, как и ожидалось, и делают findOne
вручную либо через БД, либо через консоль браузера возвращает данные, как и ожидалось.
Если я удаляю params, то он просто делает Streams.findOne()
данные возвращают первое stream
из базы данных и представление имеет доступ к нему, как и ожидалось. Я действительно не уверен, что здесь происходит.
1 ответ
Вероятно, вам нужно подождать публикации потоков, прежде чем пытаться получить доступ к данным: механизм Pub/Sub в Meteor асинхронный, когда вы подписываетесь на некоторые данные, вы не сразу получаете их обратно в браузере из-за основного клиента / сервера задержка.
Попробуйте реорганизовать ваш код следующим образом:
Router.route '/seasons/:season/episodes/:episode',
name: 'episode'
template: 'episode'
data: ->
Streams.findOne({season: @params.season, episode: @params.episode})
waitOn: ->
Meteor.subscribe 'streams', @params.season, @params.episode