Czy istnieje sposób zrobić zapytanie kwerendy i count_all pojedynczej metody? Do celów paginacji musimy znać całkowitą liczbę pozycji, abyśmy mogli obliczyć i pokazać liczbę stron.Znajdź i policz wszystkie w Sails.js + Waterline
Odpowiedz
getLength: function(req, res) {
Posts.find({}).exec(function(err, items){
return items.length;
});
}
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);
});
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. –
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) {
});
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: []
}
*/
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. –
Możesz filtrować zapytanie. sprawdź to: http://sailsjs.org/#!/documentation/concepts/ORM/Querylanguage.html –