Background
I have a query in Mongoose that finds a set of objects, and then returns these said objects together with the total number of them:
var itemsPerPage = 4, pageNum = 1;
Survey.find({})
.limit(itemsPerPage)
.skip(itemsPerPage * pageNum)
.then(docs => {
if (docs.length === 0)
console.log("There are no results matching your query.");
else
DocModel.count({})
.then(number => {
console.log(JSON.stringify({number, docs}));
});
})
.catch(console.log);
To achieve this I do:
find
query with params- use
limit
andskip
to obtain results from correct page - if
docs
is not empty, start acount
query - return information
Problem
The problem here, since I need pagination in the query, is that I have to make 2 separate requests to the DB (find
and count
) which can potential be very heavy.
To optimize this, I would like to avoid the count
query, but I don't know how.
Another issue is the nested promises anti pattern, but that is not the issue I would like to focus on right now.
Question
I am open to any suggestions on improving this code you may have!
via Flame_Phoenix
No comments:
Post a Comment