2015-06-09 16 views

risposta

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

     return items.length; 
    }); 
} 
+1

Sì, ma quando si fa l'impaginazione di solito impostare alcuni criteri di metodo find come saltare e limitare così poi items.length non è il numero totale di elementi nel database. –

+0

È possibile filtrare la query di ricerca. controlla questo: http://sailsjs.org/#!/documentation/concepts/ORM/Querylanguage.html –

1

Verificare Sails.Js - How I do pagination in sails.Js per l'impaginazione in Waterline.

Per ottenere il numero totale di elementi, è possibile utilizzare:

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

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

Sì, ma poi ho bisogno di chiamare Post.find(). skip (10) .limit (10) .exec() {...} per ottenere post per pagina specifica e cioè due chiamate di metodo. Le mie domande erano: c'è un metodo che fa entrambe le richieste e restituisce una raccolta di post specifici e un numero di post totali in db. Quello che voglio è un metodo con entrambe le informazioni, quindi ho meno codice. –

1

Prima si esegue una query e ottenere dati dopo che si elimina limite, saltare i parametri e ottenere contare

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

anche io potevo 't trovare qualsiasi metodo built-in di farlo in una richiesta così faccio in questo modo:

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)); 

USCITA:

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

*/