我正在尝试使用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
答案 0 :(得分:1)
我建议不要在助手中进行观察。帮助程序旨在帮助模板呈现数据。任何逻辑都应该存在于那里。助手可以被多次调用,这是你可能没想到的。
您可以在模板的onCreated()中设置find()和observe()。如果您希望用户在模板处于活动状态时进行更改,则可以将find()和observe()包装在自动运行块中。
一旦调用了添加的处理程序,就可以将结果设置为一个被动变量。那么你的帮助者除了返回反应性变量中的值之外什么都不做。
答案 1 :(得分:0)
这可能有助于澄清问题。来自docs:
observeChanges返回一个实时查询句柄,它是一个带有的对象 停止方法。在没有参数的情况下调用stop来停止调用回调 功能和拆除查询。查询将永远运行,直到 你这叫。如果从Tracker.autorun调用observeChanges 计算,重新运行计算时自动停止 或停止。 (如果使用选项“反应”设置创建光标 是的,它只会传递初始结果而不会调用任何结果 进一步的回调;没有必要在句柄上调用停止。)
所以问题不是无限循环,而是查询将永远运行 - 或者直到调用stop。