Node.js、express、mongodb 实现分页查询、条件搜索

说明:

1、分页实现使用了Mongodb的query.skip().limit().where() 这三个方法,然后利用query.exec()。

2、计算分页条件。 从前台拿到的page默认是从1开始的,所以计算Skip的参数为(page-1)*rows。

server.js文件

app.post('/users', async (req, res) => {
  var query = Customer.find({});
  var count = 0;
  var page = req.body.page;
  var rows = req.body.rows;
  // var stuname=req.body.username;
  //   if(stuname){
  //     query.where('name',stuname);
  // }
  // 当前页显示的数据所有数据-前几页显示的数据
  query.skip((page - 1) * rows);
  query.limit(rows);
  query.exec(function (err, rs) {
    if (err) {
      res.send(err);
    } else {
      //计算数据总数
      Customer.find(function (err, result) {
        jsonArray = {
          rows: rs,
          total: result.length
        };
        res.send(jsonArray);
      });

    }
  });
})

使用postman进行测试,
在这里插入图片描述
如果要筛选对应的字段。可以在server.js中将注释部分打开结果如下:
在这里插入图片描述
根据价格进行排序分页的get请求

 app.get('/goodslist', function (req, res, next) {
    // 分页
    let page =parseInt(req.query.page);
    let row =parseInt(req.query.row);
    let skip=(page-1)*row
    // 条件
    let para={}
    let goodsmodel=Goods.find(para).skip(skip).limit(row);
   // 按照价格排序 1 ↑ -1↓
      let sort =req.query.sort;
    goodsmodel.sort({'salePrice':sort})
    goodsmodel.exec({}, function (err, doc) {
      if (err) {
        res.json({
          status: "1",
          msg: err.message
        })
      } else {
        res.json({
          status: "1",
          msg: '',
          result: {
            count: doc.length,
            list:doc
          }
        })
      }
    })
  })
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值