Mongoskin中的分页(跳过+限制)

时间:2014-03-12 22:02:24

标签: javascript node.js mongodb mongoskin

从mongodb示例来看,我尝试了一些方法,例如:

// returns an empty array
funnyPosts.find({limit:5}).toArray(function(err, result) {
    console.log(result);
});

也试过

// returns { _construct_args: [],

console.log(db.collection('funny_posts').find().skip(3).limit(3));

1 个答案:

答案 0 :(得分:2)

您是否尝试使用Node.js和MongoDB实现分页?

您的参数位于错误的位置(不是find()的第一个参数)。这是HackHall GitHub link的代码:

exports.getPosts = function(req, res, next) {
  var limit = req.query.limit || LIMIT;
  var skip = req.query.skip || SKIP;
  req.db.Post.find({}, null, {
    limit: limit,
    skip: skip,
    sort: {
      '_id': -1
    }
  }, function(err, obj) {
    if (!obj) next('There are not posts.');
    obj.forEach(function(item, i, list) {
      if (req.session.user.admin) {
        item.admin = true;
      } else {
        item.admin = false;
      }
      if (item.author.id == req.session.userId) {
        item.own = true;
      } else {
        item.own = false;
      }
      if (item.likes && item.likes.indexOf(req.session.userId) > -1) {
        item.like = true;
      } else {
        item.like = false;
      }
      if (item.watches && item.watches.indexOf(req.session.userId) > -1) {
        item.watch = true;
      } else {
        item.watch = false;
      }
    });
    var body = {};
    body.limit = limit;
    body.skip = skip;
    body.posts = obj;
    req.db.Post.count({}, function(err, total) {
      if (err) next(err);
      body.total = total;
      res.json(200, body);
    });
  });
};

有关详细信息,请在webapplog.comExpress.js Guide上查找我的其他帖子。