BackgroundI 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 paramsuse limit and skip to obtain results from correct pageif docs is not empty, start a count queryreturn informationProblemThe 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.QuestionI am open to any suggestions on improving this code you may have!
Mongoose: find() and count() query
javascript;node.js;promise;mongodb;mongoose
SolutionAfter reviewing many answers, I believe I have two options:Make two queries, like I am doing now,Use a pagination plugin for mongooseMy decision was the second one and so I am now using mongoose-paginate. Hope it helps.