我发现我可以在全局函数中调用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的结果?