1
我不知道這是否是錯誤,但是當我指定limit
時,如果客戶端上的某些數據已經存在於客戶端採集。流星 - 光標與極限設置不反應
例如,如果有限制:4,並且已有1條記錄匹配,則比 返回一條記錄,並且當接下來的3條記錄是查詢的時候,從服務器到達時,光標不響應(我期待 它將被再次評估,它將返回所有這4條記錄)。
我發現它是因爲當我取消註釋所有記錄的行時,我的應用程序工作(因爲該光標將反映新數據可用)。您可以看到該查詢是相同的,只有limit
除外。
messages = Messages.find(selector, {sort: {created: -1}, limit: MessagesAPI.LIMIT}).fetch();
//Messages.find(selector, {sort: {created: -1}}).fetch());
// if i uncomment the previous line, it works
更多代碼
getMeteorState: function() {
console.log("zde");
var time = this.getParams().time;
var dir = this.getParams().dir;
//TODO: maybe check time and dir validity or let it crash ?
var ready = Session.get("messages-ready");
var params = {sort: MessagesAPI.sort.NEW, dir: dir == "prev" ? MessagesAPI.dir.PREV : MessagesAPI.dir.NEXT};
if (time) {
var d = new Date();
d.setTime(time);
params.date = d;
}
Meteor.subscribe("messages", params, function() {
console.log("ready");
Session.set("messages-ready", true);
});
var messages = [];
if (ready) {
var selector = {};
if (time && dir) {
selector.created = {};
var cond = (dir == "prev" ? "$lt" : "$gt");
var date = new Date();
date.setTime(time);
selector.created[cond] = date;
}
messages = Messages.find(selector, {sort: {created: -1}, limit: MessagesAPI.LIMIT}).fetch();
//console.log(selector);
// when i uncomment this, it will work
//console.log(Messages.find(selector, {sort: {created: -1}}).fetch());
}
return {
messages: messages
};
},
如果將.fetch()關閉,會發生什麼情況? – 2014-12-04 01:15:46
@KeithNicholas:在消息中將只是一些LocalCollection實例 – Krab 2014-12-04 01:28:39
你怎麼使用它? – 2014-12-04 01:38:38