我怎么能用猫鼬做分页?

时间:2017-01-21 22:08:34

标签: node.js mongodb mongoose mongodb-query

所有其他解决方案都使用skip(),这显然对速度不利。此外,我已经看到人们使用nin,如果你有一堆你正在检查的ID,它似乎可能是一个糟糕的解决方案。这是我到目前为止所拥有的

//Get the top 20 posts initially
  exports.getPosts = (req, res) => {
     db.post.find().sort({
         numberOfLikes: -1
     }).limit(20).exec(function(err, posts){
         if(err){
             return res.status(500).send();
         }

         res.json(posts);
     });
};

//This is to enable pagination on posts
exports.getMorePosts = (req, res) => {
    var query = req.query;

    if(!query.hasOwnProperty('numberOfLikes') || !query.hasOwnProperty('postId')){
        return res.status(400).send();
    }

    db.post.find({
        numberOfLikes: {
            $lte: query.numberOfLikes
        },
        _id: {
            $ne: query.postId
        }
    }).sort('-numberOfLikes').limit(20).exec(function(err, posts){
        if(err){
            return res.status(500).send();
        }

        res.json(posts);
    });
};

所以我使用第一个函数获取前20个帖子,然后第二个函数获得20个帖子,依此类推。第二个函数从最初的20个和最后一个帖子的postId中传递了最少数量的喜欢。从那里再获得20个。

我想按照喜欢的数量对它们进行排序,但问题是一旦它获得0个喜欢的帖子,它永远不知道何时结束,它只是继续骑自行车和第四个。

0 个答案:

没有答案