Meteor和Iron Router订阅查询

时间:2015-01-08 20:05:43

标签: javascript meteor iron-router meteor-blaze

我发现我可以在全局函数中调用findOne并且我可以访问订阅...我唯一感到困惑的是,函数的全局性如何区分集合,一个订阅到其他

// pubs

Meteor.publish("just_dob_and_id_shared_collection", function () {
  return shared_collection.find({_id: this.userId}, {fields: {'dob': 1}});
});

Meteor.publish("entire_recordset_shared_collection", function () {
  return shared_collection.find({_id: this.userId});
});

//红外控制器

fooController = RouteController.extend({
  template: 'foo-template',
  waitOn: function () {
    Meteor.subscribe("just_dob_and_id_shared_collection");
  },
...
});

barController = RouteController.extend({   
  template: 'bar-template',   
  waitOn: function () {
    Meteor.subscribe("entire_recordset_shared_collection");   }, 
... 
});

//全局函数

fooFunction = function () {
  var foo = shared_collection.findOne({_id: Meteor.userId()});
  // in this case I'll have the _id and dob... this is kinda what I've tested
  // ## will be used in foo-template
}

barFunction = function () {
  var bar = shared_collection.findOne({_id: Meteor.userId()});
  // in this case maybe I'd want the entire record set to do stuff with
  // ## will be used in bar-template
}

//模板助手

Template.registerHelper("fooHelper", function () {
  fooFunction();
}

Template.registerHelper("barHelper", function () {
  barFunction();
}

// templates

<template name="foo-template">
  {{#if fooHelper}}
  ...
  {{/if}}
<template>

<template name="bar-template">
  {{#if barHelper}}
  ...
  {{/if}}
<template>

编辑:进一步澄清

我有两个订阅,每个订阅(可能来自相同的记录集)不同的数据配置文件(记录集的一部分来自集合中的文档)。

在客户端上,当我在集合名称上执行findOne时(因为我没有在订阅名称上执行此操作),

  

(1)我打电话时会得到哪个/什么记录集(数据配置文件),例如fooFunction,为什么?,

     

(2)此数据配置文件何时更改,例如当我转到bar-template并调用其订阅时(在这种情况下,它获取记录集中的所有字段,而不仅仅是dob和_id),当我在fooFunction中调用findOne时记录集是否会改变?我问这个是因为我在集合上做了一个findOne,而不是订阅名称,所以在fooFunction中,订阅之间没有区别。所以可能会问另一种方式 - fooFunction中调用的时间到集合是否会改变findOne的结果?

0 个答案:

没有答案