我試圖實現當前單一視圖的前一個和下一個。我有當前id
和搜索上下文slug
。我將如何發佈和呈現當前文檔並鏈接到上一個和下一個 - 按搜索上下文過濾並按日期排序?這肯定是一個常見的問題,但我很難找到有效的方法。發佈前一個,下一個和下一個
查找selector
可能不應該是id
而是當前文檔的日期。
Meteor.publish('aPix', function(id, slug) {
check(id, String);
if (!slug) {
slug = 'all';
}
// should the selector be the date instead?
var selector = id;
// how find this, next and previous documents only?
return MyPix.find(selector);
});
我有這個,但無法找到如何實現它。我不知道這是一個好辦法:
var dateOfThisDoc = MyPix.findOne(id).uploadedAt;
var nextDateDoc = MyPix.findOne(
{uploadedAt: {$gt: dateOfThisDoc}},
{"metadata.tags": slug}
);
謝謝!
謝謝!今晚會檢查這個。關於將下一個/以前的文檔寫入當前文檔,這不適用於不同的搜索上下文 - 除非每次觸發新的搜索時(如果我理解正確的話)都更新下一個/前一個字段。 – Kai 2015-02-24 20:09:55
同意 - 如果您試圖展示一系列已經過濾搜索的文檔,那肯定無效。 – 2015-02-24 21:07:21
再想一想,對於一些用例來說,鏈接它們可能是有意義的。例如,如果用戶可能希望遍歷任何給定搜索中的大部分文檔。在這種情況下,可能需要將已排序的集合拉一次併爲客戶端填充下一個/ prev信息,而不是在用戶遍歷時拉取每個項目。方法的選擇取決於文檔的大小與用戶可能查看的搜索集的比例(以及因此需要與上述代碼一起發生的數據庫過濾器/排序/限制的數量)。 – 2015-02-25 14:19:17