2015-06-09 8 views

Antwort

2
getLength: function(req, res) { 
    Posts.find({}).exec(function(err, items){ 

     return items.length; 
    }); 
} 
+1

Ja, aber wenn Paginierung tun Sie in der Regel einige Kriterien in Find-Methode wie skip gesetzt und begrenzen so ist, dann ist items.length nicht die Gesamtzahl der Elemente in der Datenbank. –

+0

Sie könnten die Suchanfrage filtern. Schau dir das an: http://sailsjs.org/#!/documentation/concepts/ORM/Querylanguage.html –

1

Überprüfen Sie Sails.Js - How I do pagination in sails.Js für Paginierung in Waterline.

Post.count().exec(function (err, nbOfInstances) { 
    if(err) return res.negociate(err); 

    return res.ok(nbOfInstances); 
}); 
+3

Ja, aber dann muss ich Post.find() aufrufen. skip (10) .limit (10) .exec() {...} um Posts für bestimmte Seiten zu erhalten, und das sind zwei Methodenaufrufe. Meine Fragen waren, gibt es eine Methode, die sowohl Anfragen und gibt spezifische Beiträge Sammlung und eine Anzahl von insgesamt Beiträge in db. Was ich will, ist eine Methode mit beiden Informationen, also habe ich weniger Codierung. –

1

Zuerst abfragen und erhalten Daten nach, dass Sie Grenze löschen, Parameter überspringen und

delete query._criteria.limit; 
delete query._criteria.skip; 
Model.count(query._criteria).exec(function countCB(error, count) { 
}); 
0

ich auch couldn zählen erhalten:

Um die Gesamtzahl der Einzelteile zu erhalten, können Sie ‚findet keinerlei integrierte Methode, dass in einer Anfrage zu tun, so dass ich es wie folgt tun:

let queryParams = {}, 
    pageNo = 1, 
    perPage = 10; 
Post.count(queryParams) 
    .then(_count=>{   
     return {posts_count: _count, 
       posts: Post.find(queryParams).paginate({page: pageNo, limit: perPage})}; 
    }) 
    .then(res.ok) 
    .catch(err=>res.negotiate(err.message)); 

OUTPUT:

/* 
{ 
    posts_count: 0, 
    posts: [] 
} 

*/ 
Verwandte Themen