2015-06-09 15 views

Odpowiedz

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

     return items.length; 
    }); 
} 
+1

Tak, ale kiedy robi paginacji zwykle ustawić kilka kryteriów w metodzie find jak przejść i ograniczenia tak wtedy items.length nie jest całkowitą liczbą elementów w bazie danych. –

+0

Możesz filtrować zapytanie. sprawdź to: http://sailsjs.org/#!/documentation/concepts/ORM/Querylanguage.html –

1

Zapoznaj się z Sails.Js - How I do pagination in sails.Js do paginacji w Waterline.

Aby uzyskać całkowitą liczbę elementów, można użyć:

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

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

Tak, ale muszę zadzwonić Post.find(). skip (10) .limit (10) .exec() {...}, aby uzyskać posty dla konkretnej strony i to są dwa wywołania metod. Moje pytania brzmiały: jest jakaś metoda, która wykonuje zarówno żądania, jak i zwraca określoną kolekcję wpisów i liczbę wszystkich wpisów w db. To, czego chcę, to jedna metoda z obydwoma informacjami, więc mam mniej kodowania. –

1

najpierw kwerendy i pobrać dane potem usunąć ograniczenie, należy pominąć parametry i uzyskać liczyć

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

ja też mogłam „t znaleźć żadnego wbudowanego sposób to zrobić w jednym żądaniu więc robię to tak:

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

WYJŚCIE:

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

*/ 
Powiązane problemy