我正在使用最新的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)时,我只得到所有结果,就像没有进行过滤一样。
这段代码有效吗?为什么结果在服务器上是预期的,但在客户端上不正确?