2013-06-30 59 views
1

我有一個名爲server/publications.js具有下列文件:如何限制客戶只能看到最新的100條記錄?

var MAX_RESULTS = 100; 

Meteor.publish('messages', function() { 
    var count = Messages.find().count(); 
    if (count > MAX_RESULTS) { 
    return Messages.find({}, {sort: {submitted: 1}, skip: count - MAX_RESULTS}); 
    } else { 
    return Messages.find(); 
    } 
}); 

和被叫client/main.js與文件:

Meteor.subscribe('messages'); 

在我的模板助手我再簡單地調用Messages.find()。這項技術的工作原理是在開始時僅向客戶端提供最新的100個結果。然而,每創造一項新紀錄,客戶都會越來越多地看到。

我該怎麼做才能使客戶端只有看到最新的100個結果?

回答

2

使用limit

Messages.find({}, {sort: {submitted: 1}, 
        skip: count - MAX_RESULTS, 
        limit: MAX_RESULTS 
}); 
+0

嗯,嘗試這種它似乎是現在,當我嘗試插入一個消息,客戶永遠不會收到它。但是,如果我刷新它的工作頁面。有沒有更好的方法來獲得*最後* 100消息? –

+0

你可以刪除'skip'並使用'sort:{submitted:-1}' – Akshat

+0

這可能是一個好主意。但是我需要按照這種方式對消息進行排序,以便頁面以正確的順序渲染它們。有沒有辦法扭轉「{{#each}}」? –

相關問題