2017-05-01 97 views
0

我得到了一個帶有1k文檔的集合,我想通過將其限制爲只有16個文檔的pr頁面,然後使用skip方法進行分頁。我將如何通過URL查詢來完成該操作?Mongoose:限制查詢結果在MongoDB中進行分頁

現在我的路線是這樣的,但不工作 - 我可以查詢:本地主機:3000/API /飼料isActive =真實的,但我不能與本地主機限制它:3000/API /飼料如我所願,isActive = true & page = 16。

router.get('/feed', function(req, res, next) { 
    var params = req.query; 
    var page = req.query.page; 
    var pagesize = 16 

    Feed.find(params) 
    .sort({'date' : 1}) 
    .skip(pagesize*(page-1)) 
    .limit(pagesize) 
    .exec(function(err, result) { 
     if (err) return next(err); 
     res.json({ 
     confirmation: 'success', 
     result: result 
     }) 
    }); 
}) 
+0

而不是'req.query.limit'? – robertklep

+0

嗯,我不這麼認爲 - 它似乎接受查詢:/ api/feed?isActive = true&page = 16罰款,但它沒有返回任何內容:/ – DbTheChain

+0

我指的是在您的&limit = 16使用原始問題,在你編輯之前。 – robertklep

回答

0

您正在使用的所有查詢字符串參數,屬性查詢:

var params = req.query; 

因爲現在要增加一個新的查詢字符串參數page,這會影響您的查詢。在你的URL例子中,查詢變得這樣:

{ 
    isActive : 'true', 
    page  : '16' 
} 

你應該使用req.query作爲查詢文檔之前刪除參數:由於使用了`req.query.page`

var page = req.query.page; 
delete req.query.page; 

var params = req.query; 
+0

太棒了,非常感謝! – DbTheChain