Meteor 在操作您观察到的反应性集合时,如何避免循环依赖关系?

Meteor 在操作您观察到的反应性集合时,如何避免循环依赖关系?,meteor,reactive-programming,Meteor,Reactive Programming,每次将项目添加到我的收藏中时,我都会运行一个自动运行循环。但我还必须删除同一代码块中的此项。所以我以一个无限的自动运行循环结束 $meteor.autorun($scope, function(){ var traces = Traces.find().fetch(); _.each(traces, function(trace){ console.log(trace.coordinates); //remove local trace. Serv

每次将项目添加到我的收藏中时,我都会运行一个
自动运行
循环。但我还必须删除同一代码块中的此项。所以我以一个无限的自动运行循环结束

$meteor.autorun($scope, function(){
    var traces = Traces.find().fetch();
    _.each(traces, function(trace){
        console.log(trace.coordinates);
        //remove local trace. Server one is already erased.
        Tracker.nonreactive(function(){
            Traces.remove({_id:trace._id});
        });
    });
});
我试图将删除代码放在一个非反应函数中,但它不起作用,代码在循环中运行


如何暂停/启用依赖项的反应性?

如果本地跟踪已在服务器上删除,为什么必须删除它们?该删除应该自动传播到mini-mongo。它不会传播,因为我只在服务器上的发布函数中观察到“已添加”。这是一种溪流。数据被发送到客户端并从服务器中删除。然后客户端接收数据,处理数据,并将其删除。也许自动运行不是最好的选择。相反,请尝试客户端观察程序,其中added()的回调将按id删除传入的跟踪。@JeremyS。我刚刚尝试过这个,但这与observer也是一个自动运行块是一样的。如果执行(客户端)Traces.find().observeChanges({添加:函数(id){Traces.remove(id);}}),会发生什么?这不应该有你发布的代码的循环性。