【发布时间】:2015-04-30 15:21:14
【问题描述】:
我的 Meteor 应用程序,直到最近运行良好,但最近停止工作,尽管应用程序没有更改代码。我已确认该问题存在于具有两种不同操作系统的三台不同机器上,因此我认为这不是硬件/软件问题。
主要问题(是的,不止一个问题)是我的订阅未被识别为“就绪”,即使发布已被标记为就绪并且我的记录在客户端中可用。
这是我的代码:
发布:
Meteor.publish 'tickets', (selectedSquad) ->
self = this
unformattedTickets = [ array of objects coming from JIRA API ]
_(unformattedTickets).forEach (issue) ->
doc =
normalizedColumn1: issue.fields.col
...
self.added 'tickets', Random.id(), doc
console.log 'publish ready'
self.ready()
订阅:
Tracker.autorun ->
@ticketSubscriptionHandle = Meteor.subscribe('tickets', Session.get('selectedSquad'))
首页自动运行:
Tracker.autorun ->
if ticketSubscriptionHandle.ready()
console.log 'ready'
doSomething()
我可以在我的服务器中看到“发布就绪”,我可以在控制台中查询 Tickets.find(),但 ticketSubscriptionHandle.ready() 返回 false,未记录“就绪”且 doSomething() 未运行。
据我所知,我正在使用文档中指定的订阅/自动运行。我也不明白如果不修改代码或正在使用的流星版本,这怎么可能停止工作。
如果您想查看完整的代码库,可以在 GitHub 上的 https://github.com/jprince/kanburn 上找到它
任何帮助将不胜感激。
【问题讨论】:
-
ticketSubscriptionHandle 对象在您的主页自动运行中是否可用? Coffeescript 可能存在范围问题。
-
是的,它可用。
-
我想我已经深入了解了...我的应用程序使用 Bootstrap 轮播来旋转一系列 D3 图表。这些图表填充了基于
selectedSquad的数据。完成一个周期后,selectedSquad切换并为下一个小队请求数据。似乎我的来自 JIRA API 的数据现在被检索得更慢了,导致轮播在数据呈现之前循环和切换小队,让我一直处于被动重新加载的循环中。这就解释了为什么这似乎在没有更改代码的情况下就崩溃了。谢谢你们的帮助,伙计们。
标签: meteor subscription