我通过服务器方法执行数据库计数.用户可以选择如何执行计数,然后调用该方法.
我的问题是计数可能需要一些时间,用户可能会在方法运行时改变主意,并请求不同的计数.我有办法取消调用的方法并运行新的计数吗?
我以为这个.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);
}
}
});
然后停止它,你只是更新该标志为假,该方法将尽快停止.