如何在Meteor + MongoDB中调用级联find()?

时间:2014-09-19 16:16:49

标签: mongodb meteor

我使用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错误。

1 个答案:

答案 0 :(得分:0)

this.registrants已经是游标(Registrants.find()的结果),而不是集合,因此它没有您要查找的find()方法。但是,如果控制器提供的功能不够,则在帮助程序中进行另一个查询没有任何问题:

Template.registrantsTemplate.helpers({
  filteredRegistrants: function() {
    return Registrants.find(...query...);
  },
});