首页 > 解决方案 > 如何使用 Node.js 传递值以跳过和限制 MongoDB 的方法

问题描述

我在将值传递给 mongoDB 的 skip 方法时遇到问题。下面是有效的代码,在此代码中,我只是将数字 10 传递给 skip 方法。

Post.find(finalQuery, (err, posts) => {
  if (err) {
    res.json({
      success: false,
      message: err
    });
  } else {
    if (!posts) {
      res.json({
        success: false,
        message: 'No posts found.'
      });
    } else {
      res.json({
        success: true,
        posts: posts
      });
    }
  }
}).sort({
  '_id': -1
}).skip(10).limit(10);

但是我想将 skip 的值作为变量传递,下面是不起作用的代码。我使用http请求将skip作为参数传递。我究竟做错了什么?谢谢!

router.get('/getAllPosts/:skip', (req, res) => {
      let finalQuery = {}; //I have written correct query in actual code, skipped here for simplicity
      Post.find(finalQuery, (err, posts) => {
        if (err) {
          res.json({
            success: false,
            message: err
          });
        } else {
          if (!posts) {
            res.json({
              success: false,
              message: 'No posts found.'
            });
          } else {
            res.json({
              success: true,
              posts: posts
            });
          }
        }
      }).sort({
        '_id': -1
      }).skip(req.params.skip).limit(10);
    }

标签: node.jsmongodbmongoose

解决方案


skip接受数字参数,而不是字符串,因此您需要转换:

.skip(Number(req.params.skip))

推荐阅读