Meteor Helper 使用基于反应变量的查询

Meteor Helper using query based on reactive variable

我正在尝试使用一个助手,它应该 return 一个 Collection 指定整个 Collection 的一个子集 $in 使用来自 templates:array.[=23= 的反应数组]

我有

var tags = new ReactiveArray();

在某些情况下,我更改了数组的内容,类似于

tags.pushArray(note.tags);

(或者我应该使用 .set()?)

我的帮手是

Template.editor.helpers({
    tagslist() {
        return Tags.find({ _id: { $in : tags }});
    }, 
});

但后来我在 meteor.js:1010 中得到一个异常,看起来像这样

if (allArgumentsOfTypeString)
   console.log.apply(console, [Array.prototype.join.call(arguments, " ")]);

堆栈中有compileValueSelector。这似乎表明 helper 的编译并不满足于它所发现的内容。

我还尝试使 tags 成为模板本地实例,并在辅助查询中将 .get() 添加到 tags。但是结果一样。

我应该从哪里开始寻找?我是否正确使用 ReactiveArray?是否可以做我想做的事,即基于 ReactiveArray 的反应式查询?

我个人没有使用过 ReactiveArray,但我认为同样的模式会起作用。我坚持使用 ReactiveVar,所以这里有一个例子可以让你朝着正确的方向前进。

Template.editor.onCreated(function () {
    const instance = this;
    instance.tags = new ReactiveVar([]);
});

Template.editor.helpers({
    tagslist() {
        const tags = Template.instance().tags.get();
        return Tags.find({ _id: { $in : tags }});
    }
});

Template.editor.events({
    'click .tag'(event, instance){
        const tag = this;
        const tags = instance.tags.get();
        tags.push(tag);
        instance.tags.set(tags);
    }
});