Meteor strange behaviour
我正在测试Meteor拥有的一些例程,我想知道这是否是正常活动,或者我出了点问题...
我将逐步描述:
我发布我的收藏集以便只拥有我想要的
服务器/publish.js
1 2 3 4 5 6 7 | Meteor.publish('decisions', function (decisionCursor) { return Decisions.find({ active: true }, { limit: 20, skip: decisionCursor }); }); Meteor.publish('decisionsToModerate', function (decisionCursor) { return Decisions.find({ active: false }, { sort: { createdAt: -1 }, limit: 1, skip: decisionCursor }); }); |
我订阅我的客户的两个收藏出版物
客户端/client.js
1 2 3 4 5 6 7 8 | Meteor.startup(function () { SimpleSchema.debug = true; Session.setDefault('decisionCursor', 0); Deps.autorun(function () { Meteor.subscribe("decisions", Number(Session.get('decisionCursor'))); Meteor.subscribe("decisionsToModerate", Number(Session.get('decisionCursor'))); }); }); |
我设置了函数来检索两个集合,以防止每次都调用查询...
客户端/lib/environment.js
1 2 3 4 5 6 7 8 | activeDecisions = function() { var decisions = Decisions.find({active: true}); console.log(decisions.fetch().length); // PROBLEM HERE return decisions; }; moderateDecisions = function() { return Decisions.find({active: false}); }; |
我创建了我的视图内容
客户端/视图/home/home.js
1 2 3 4 | Template.home.activeDecisions = function() { var decisions = activeDecisions(); return decisions; }; |
您可以看到,在client / lib / environment.js上,我添加了一行,供您查看出现问题的地方...
当我去
1 2 3 4 | this.route('home', { path: '/', layoutTemplate: 'masterLayout' }); |
如果我有Chrome控制台,如我在client / lib / environment.js上所写,它将返回一行包含许多
1 2 3 | 0 environment.js?9868bbbef2024c202fd33213ed060f067dadbe75:3 3 environment.js?9868bbbef2024c202fd33213ed060f067dadbe75:3 3 environment.js?9868bbbef2024c202fd33213ed060f067dadbe75:3 |
三行,第一行告诉我我有0个文档(什么?我有三个活动文档),接下来的两行告诉我我想知道的确切信息,我有三个文档。
我想要这个数字,因为我想在一个会话变量中设置它,每次调用该查询时都会更新,因为如果我在其他地方设置它(比如说
所以我看到的问题是我不知道为什么Meteor如果将查询解析为一个变量只告诉我写一次,那么它会向控制台写入三遍...如果我将会话设置为0,然后3,然后3 ...这可能会导致一些错误?
模板助手形成反应式上下文-如果其中的反应式变量得到更新,则助手将再次运行。因此,每当
该函数在首次渲染模板时打印
回到最初的问题,您可以将会话变量设置为光标计数(顺便说一句,调用