Сценарий: я вызываю метод из моего шаблона, который выполняет сложные вычисления с использованием данных из нескольких коллекций и возвращает один небольшой фрагмент данных. Это прекрасно работает и экономит полосу пропускания.
Template.bar.onCreated(function() {
this.bar = new ReactiveVar();
Meteor.call("foobar", (err, res) => { if (err) { throw err; } else { this.bar.set(res) }} );
});
Теперь я хочу поместить вызов этого метода в autorun
, чтобы он перезапускался всякий раз, когда изменяется одна (только одна) из участвующих коллекций. Единственное решение, которое я могу придумать, - это просто subscribe
для какой-то очень специфической c публикации и сделать .find({}).fetch()
внутри указанного autorun
, что, безусловно, сработает, но оно также получит данные, которые я буду на самом деле не использовать, тратя тем самым пропускную способность и нанося поражение точке.
Template.bar.onCreated(function() {
this.bar = new ReactiveVar();
Meteor.subscribe('specificFooDocuments');//TMI :(
this.autorun(() => {
Foo.find({}).fetch();
Meteor.call("foobar", (err, res) => { if (err) { throw err; } else { this.bar.set(res) }} );
})
});
AFAIK то же самое произошло бы с .observe
и .observeChanges
.
Так что вопрос: могу ли я сделать autorun
зависит от запроса без выборки фактических данных, и если да, то как? (предпочитается родной метеор)