我通过服务器方法执行数据库计数.用户可以选择如何执行计数,然后调用该方法.
我的问题是计数可能需要一些时间,用户可能会在方法运行时改变主意,并请求不同的计数.我有办法取消调用的方法并运行新的计数吗?
我以为这个.unblock()可能会工作;它将允许运行一个新的方法,但不会取消旧的方法.我也考虑过预先计数,然后只是使用查找,但是选择器组合太多了.
这是我的代码,这很简单:
//Server Meteor.methods({ getFilterCount: function(oFilterSelector) { return clMaBldgs.find(oFilterSelector,{}).count(); } }); //Client Meteor.call('getFilterCount',oFilterSelector,function (error,result) { //do some stuff });
解决方法
更多的工作,但如果您有一个反应变量(可能是数据库中的条目),该方法的状态,并且在方法本身,您检查该标志每一次机会获得状态.
{ _id: "some id for the method",running: true }
伪码用于方法
Meteor.methods({ method: (_id) => { status = getStatusForId(_id); while(status) { status = getStatusForId(_id); } } });
然后停止它,你只是更新该标志为假,该方法将尽快停止.