Meteor + React getMeteorData未使用正确的数据进行更新

时间:2016-04-21 03:44:00

标签: meteor reactjs minimongo

我正在使用最新的Meteor和React。我正在服务器上使用mongo $text搜索功能来过滤查询。我发现我的本地数据没有改变,即使查询正在服务器上正确重新运行。

我的组件看起来像这样:

TodoLists = React.createClass({
  mixins: [ReactMeteorData],
  getMeteorData() {
    Meteor.subscribe('todoLists', this.props.query);
    const todoLists = TodoLists.find().fetch();

    //print out 1
    console.log(todoLists);
    return {
      todoLists
    };

    // same as:
    // return {
    //   todoLists: TodoLists.find().fetch()
    // };
  },
  ....
});

在服务器上,我有:

Meteor.publish('todoLists', function(query) {
      //if no search query
      if (!query) {
        return TodoLists.find();
      }

      //searching...
      const todoLists = TodoLists.find({ 
        $text: {
          $search: query
        }
      });

      //print out 2
      console.log(todoLists.fetch());
      return todoLists;
    }
  });

有趣的是,我发现当this.props.query更改时,服务器上的发布功能运行,并按照指示将过滤后的结果打印到控制台(打印输出2)。但是,当我从客户端上的TodoLists.find().fetch()打印出结果(打印输出1)时,我只得到所有结果,就像没有进行过滤一样。

这段代码有效吗?为什么结果在服务器上是预期的,但在客户端上不正确?

0 个答案:

没有答案