2017-05-01 6 views
0

Ich habe eine Sammlung mit 1k Dokumente und ich möchte sie paginieren, indem Sie es mit nur 16 docs pr Seite begrenzen, dann verwenden Sie die Skip-Methode. Wie würde ich das mit einer URL-Abfrage erreichen?Mungo: Begrenzen Abfrage Ergebnis in MongoDB für Paginierung

Gerade jetzt meine Route wie folgt aussieht, aber nicht funktioniert - ich abfragen kann: localhost: 3000/api/Futtermittel isActive = true, aber ich kann es nicht mit localhost begrenzen: 3000/api/feed ? isActive = true & Seite = 16, wie ich will.

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

Weil Sie mit 'req.query.page' und nicht 'req.query.limit'? – robertklep

+0

Hm, ich denke nicht - Es scheint die Abfrage zu akzeptieren:/api/feed? IsActive = true & page = 16 gut, aber es gibt nichts zurück:/ – DbTheChain

+0

Ich bezog mich auf die Verwendung von '& Limit = 16' in Ihrem ursprüngliche Frage, bevor Sie es bearbeitet haben. – robertklep

Antwort

0

Sie verwenden alle Query-String-Parameter als Eigenschaften abfragen zu:

var params = req.query; 

Weil du jetzt bist eine neue Abfrage-String-Parameter page hinzufügen, diese Abfrage beeinflussen. In Ihrem URL Beispiel wird die Abfrage folgendermaßen aus:

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

Sie diesen Parameter vor der Verwendung req.query als Abfragedokument entfernen sollte:

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

var params = req.query; 
+0

Super, funktioniert perfekt, vielen Dank! – DbTheChain