You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mongoose-paginate执行搜索查询后如何获取全量数据

enter image description here

问题原因

当前代码无论请求是否携带stdID参数,都会固定给分页查询传递{stdID: req.query.stdID}的查询条件:当未传递stdID时,req.query.stdID为undefined,数据库会匹配所有stdID值为undefined的文档,这类文档不存在,因此返回空数组。

修复方案

动态构建查询条件对象,仅当stdID参数存在时才添加对应的过滤规则,无参数时查询对象为空,即可匹配全量数据。同时还修复了原代码的两个潜在问题:

  • parseInt(req.query.limit, 4)的进制参数错误,改为10进制解析避免limit值异常
  • 错误捕获分支补充了响应返回,避免请求长时间挂起

修改后代码如下:

router.get('/allStudents', async (req,res) => {
  const limit = parseInt(req.query.limit, 10) || 4;
  const page = parseInt(req.query.page, 10) || 1;

  const PAGE_SIZE = 10;
  const skip = (page - 1) * PAGE_SIZE;

  try {
    // 动态生成查询条件
    const query = {}
    if (req.query.stdID) {
      query.stdID = req.query.stdID
    }
    const stdData = await Student.paginate(query, {limit, page, skip})

    return res.status(200).json({
      success: true,
      data: stdData
    })
  
  } catch (err) {
    console.log(err);
    return res.status(500).json({
      success: false,
      message: '查询学生数据失败'
    })
  }
});

内容的提问来源于stack exchange,提问作者Borgs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:15:03