流星应用程序中的全球mongodb光标

流星应用程序中的全球mongodb光标,mongodb,meteor,Mongodb,Meteor,我正在尝试用Meteor构建一个应用程序,我对这个框架还不熟悉 我想做的是让在tablets函数中返回的Mongocursor在colors函数中使用搜索参数。目前,我只是再次获取反应变量并运行Tablets.find()。但是我还有很多其他类似的函数,所以我想使用相同的Mongo游标。是否有可能从平板电脑功能创建一个全局Mongo光标,该光标也将是被动的 下面的代码是我的设置: Template.tabletsList.helpers({ tablets: function() { //

我正在尝试用Meteor构建一个应用程序,我对这个框架还不熟悉

我想做的是让在tablets函数中返回的Mongocursor在colors函数中使用搜索参数。目前,我只是再次获取反应变量并运行Tablets.find()。但是我还有很多其他类似的函数,所以我想使用相同的Mongo游标。是否有可能从平板电脑功能创建一个全局Mongo光标,该光标也将是被动的

下面的代码是我的设置:

Template.tabletsList.helpers({
tablets: function() {
  // read the user's last search (if any)
  var query = Template.instance().query.get();

  // sort options
  var options = {sort: {manufacturer: 1}};

  if ($.isEmptyObject(query)) {
   // if the user didn't input a search just find all tablets
  var tabletCursor = Tablets.find({}, options);
  return tabletCursor;
}
else {
  // find all tablets matching the search expression
  return Tablets.find(query, options);
 }
},
colors: function() {
 var query = Template.instance().query.get();
 if ($.isEmptyObject(query))
   var allTablets = Tablets.find().fetch();
 else
  var allTablets = Tablets.find(query).fetch();
 var color = '';
 var colors = [];
 allTablets.forEach(function (tablet) {
  for (var i=0; i<tablet.specs.color.length; i++) {
    color = tablet.specs.color[i];
    if ($.inArray(color, colors) === -1) {
      colors.push(color);
    }
  }
});
return colors.sort();
}
Template.tabletsList.helpers({
片剂:功能(){
//读取用户的上次搜索(如果有)
var query=Template.instance().query.get();
//排序选项
var options={sort:{manufacturer:1}};
if($.isEmptyObject(查询)){
//如果用户没有输入搜索,只需查找所有平板电脑
var tabletCursor=Tablets.find({},options);
返回tabletCursor;
}
否则{
//查找与搜索表达式匹配的所有平板电脑
返回平板电脑。查找(查询、选项);
}
},
颜色:函数(){
var query=Template.instance().query.get();
if($.isEmptyObject(查询))
var allTablets=Tablets.find().fetch();
其他的
var allTablets=Tablets.find(query.fetch();
var color='';
var颜色=[];
所有平板电脑。forEach(功能(平板电脑){
对于(var i=0;i您可以创建:

然后,从代码中的任何位置,您都可以通过以下方式访问:

var tabletCursor = UI._globalHelpers.tablets(query);

如果您无法访问
查询
任何地方,您可以将其添加到
会话
或创建一个新的反应变量来保存它。

谢谢,我会尝试一下。我确实将查询作为反应变量,因此我可以访问它。效果很好。谢谢。
var tabletCursor = UI._globalHelpers.tablets(query);