C'è un modo per selezionare query e count_all query tramite metodo singolo? Per scopi di impaginazione, dobbiamo conoscere il numero totale di articoli in modo che possiamo calcolare e mostrare il numero di pagine.Trova e conta tutto in Sails.js + Waterline
risposta
getLength: function(req, res) {
Posts.find({}).exec(function(err, items){
return items.length;
});
}
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);
});
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. –
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) {
});
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: []
}
*/
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. –
È possibile filtrare la query di ricerca. controlla questo: http://sailsjs.org/#!/documentation/concepts/ORM/Querylanguage.html –