我測試了一些例程,流星有,我想知道這是這是正常的行爲,或者有問題的話...流星奇怪的行爲
我會一步一步描述:
發佈我的收藏,以只有我想要什麼
服務器/ publish.js
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
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
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.js
Template.home.activeDecisions = function() {
var decisions = activeDecisions();
return decisions;
};
正如你所看到的,在客戶端/ lib目錄/ environment.js我加入一條線,你看到那裏我看到了問題......
當我去http://localhost:3000/
鐵路線負載
this.route('home', {
path: '/',
layoutTemplate: 'masterLayout'
});
如果我得到ØChrome的控制檯,因爲我在客戶端/ lib中寫道/ environment.js它應當返回一行與一些Decisions
文件,在這種情況下,我只有3組活動的決定,但Chrome輸出這個:
0 environment.js?9868bbbef2024c202fd33213ed060f067dadbe75:3
3 environment.js?9868bbbef2024c202fd33213ed060f067dadbe75:3
3 environment.js?9868bbbef2024c202fd33213ed060f067dadbe75:3
三行,第一個告訴我我有0個文件(什麼?我有三個活動文檔),接下來的兩行告訴我我想知道的是什麼,我有三個文檔。
我想要這個號碼,因爲我想將它設置在一個會話變量中,每次查詢被調用時都會更新,因爲如果我將它設置在其他地方(比如說,例如Template.home.rendered
),我將創建兩個querys,要慢一些。
所以我看到的問題是,我不知道爲什麼流星寫入控制檯三次,如果我告訴它只寫一次,當查詢被解析爲一個變量......如果我設置會話它將是0,然後3,然後3 ...這可能會導致一些錯誤?
謝謝你,你的回答和你的文章是完美的我的情況,並解釋它非常好:) –
優秀!我很高興這很有幫助。 :) –
我已經打開了另一個prolem,類似於這個但不一樣...如果你可以看看... http://stackoverflow.com/questions/23772693/meteor-publish-subscribe-is-沒有反應 –