Maybe if you better define slow, how many times it need to re-run the query per second etc.
And where/how is that “current” ReactiveVar being used later, if it could not be some issue with re-rendering there.
If observe is called from a Tracker.autorun computation, it is automatically stopped when the computation is rerun or stopped.
However, there is a problem with the autorun: it keeps a reactive dependency on every initial call to added->updateCurrent->OrderCards.findOne(). See here:
To solve this, change updateCurrent like this:
let updateCurrent = function (doc) {
Tracker.nonreactive(function() {
// Your code here
});
}
In fact, until the issue is fixed, you might want to always use Tracker.nonreactive in observe hooks.