流星集合observeChanges导致无限循环

时间:2017-04-26 14:49:02

标签: meteor

我正在尝试使用collection.observeChanges将新记录添加到我的集合中时显示一条消息,如下面的代码所示,但是一旦应用程序加载,应用程序将进入显示控制台消息的无限循环(添加)如下图所示,有人可以告诉我这里我缺少的是什么以及如何解决它以使其显示“已添加”#39;仅当新记录添加到集合时才会出现消息?感谢

DECLARE @MyID int

SET @MyID = (SELECT MIN(ID) FROM @MyTable)

WHILE @MyID is not null
BEGIN

  SELECT * FROM @MyTable WHERE ID = @MyID

  SET @MyID = (SELECT MIN(ID) FROM @MyTable WHERE @MyID < ID)
END

2 个答案:

答案 0 :(得分:1)

我建议不要在助手中进行观察。帮助程序旨在帮助模板呈现数据。任何逻辑都应该存在于那里。助手可以被多次调用,这是你可能没想到的。

您可以在模板的onCreated()中设置find()和observe()。如果您希望用户在模板处于活动状态时进行更改,则可以将find()和observe()包装在自动运行块中。

一旦调用了添加的处理程序,就可以将结果设置为一个被动变量。那么你的帮助者除了返回反应性变量中的值之外什么都不做。

答案 1 :(得分:0)

这可能有助于澄清问题。来自docs

  

observeChanges返回一个实时查询句柄,它是一个带有的对象   停止方法。在没有参数的情况下调用stop来停止调用回调   功能和拆除查询。查询将永远运行,直到   你这叫。如果从Tracker.autorun调用observeChanges   计算,重新运行计算时自动停止   或停止。 (如果使用选项“反应”设置创建光标   是的,它只会传递初始结果而不会调用任何结果   进一步的回调;没有必要在句柄上调用停止。)

所以问题不是无限循环,而是查询将永远运行 - 或者直到调用stop。