2015-03-07 3 views
1

Я имею установку в streams публикации и подписок, но по какой-то причине, если я следующий в моем маршруте вид не получает данных:Железного findOne маршрутизатора данных возвращения неопределенные

Router.route '/seasons/:season/episodes/:episode', 
    name: 'episode' 
    action: -> 
     @render(
      'episode', 
      data: -> 
       Streams.findOne({season: @params.season, episode: @params.episode}) 
     ) 

Если я вхожу в Params они есть как и ожидалось, и делать findOne вручную либо через БД, либо в консоли браузера возвращает данные, как ожидалось.

Если я удаляю параметры так, как это делает 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 
+0

Теперь я получаю эту ошибку 'Исключение из суб 6hdDJSYJHkEpP5yS3 Ошибка: Не проверял() все аргументы во время издателя«episodes'' данных Я возвращаюсь немного изменился, чтобы вернуть такой объект: '{episode: Episodes.findOne ({season: 3, episode: 1}), игры: Games.find ({season: 3, episode: 1})}'. Я пробовал ждать, пока оба https://coderwall.com/p/yhpn9a/waiton-and-multiple-subscriptions-in-iron-router, но все равно получаю сообщение об ошибке. – DEfusion

+0

Я понял, что params возвращались в виде строк, но данные в mongo, которые я делал find on, это числа, я просто добавил: 'parseInt (@ params.season, 10)'. Это звучит как разумная ошибка, или я пропущу что-то еще? – DEfusion

Смежные вопросы