Is there a way to do select query and count_all query via single method? For pagination purposes we need to know total number of items so we can calculate and show number of pages.
Find and count all in Sails.js + Waterline
4.8k Views Asked by Kristian Ačkar At
4
There are 4 best solutions below
1

Check out Sails.Js - How I do pagination in sails.Js for pagination in Waterline.
To get the total number of items, you can use:
Post.count().exec(function (err, nbOfInstances) {
if(err) return res.negociate(err);
return res.ok(nbOfInstances);
});
0

First you query and get data after that you delete limit, skip parameters and get count
delete query._criteria.limit;
delete query._criteria.skip;
Model.count(query._criteria).exec(function countCB(error, count) {
});
0

I also couldn't find any built-in method to do that in one request so I do it like this:
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: []
}
*/