我使用Meteor&铁路由器。我在路由器中定义了以下数据上下文:
data: function() { return {
eventId: this.params._id,
registrants: Registrants.find({eventIds: {$elemMatch: { $in: [this.params._id]}}}, {sort: {name:1, phone:1, email:1}}),
}}
我想通过用户输入进一步过滤注册人。在我的情况下,我已经ReactiveVar
调用filterName
来监听用户的输入文本。每当输入文本发生更改时,filterName
都会更新。 (我按照这个答案ng-repeat + filter like feature in Meteor Blaze/Spacebars)
现在,我想将$and
添加到Registrants.find()方法以派生新的registrants
数据上下文。我该怎么做才能使查询对filterName
?
另一种方法是定义模板助手方法filteredRegistrants
。最初,其值与return this.registrants
相同。每当filterName
发生变化时,我都会return this.registrants.find({name: filterName})
,但不知怎的,我无法从find
光标调用registrants
,是吗?这样做时我遇到undefined is not function
错误。
答案 0 :(得分:0)
this.registrants
已经是游标(Registrants.find()
的结果),而不是集合,因此它没有您要查找的find()
方法。但是,如果控制器提供的功能不够,则在帮助程序中进行另一个查询没有任何问题:
Template.registrantsTemplate.helpers({
filteredRegistrants: function() {
return Registrants.find(...query...);
},
});