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

请求协助实现Node.js与MongoDB的服务端分页(附现有代码)

Node.js + MongoDB 服务端分页实现方案

服务端分页核心是利用MongoDB的skip()和limit()方法,同时查询总数据量方便前端计算总页数。我们可以从请求参数中获取分页参数,同时优化原代码的冗余逻辑,实现如下:

function getServiceQualityAnex(req, res, next) {
    // 解析分页参数,设置默认值
    const page = parseInt(req.query.page) || 1;
    const pageSize = parseInt(req.query.pageSize) || 10;
    const skipCount = (page - 1) * pageSize;
    
    // 复用查询条件,避免重复编写
    const query = req.query.code ? { location: req.query.code } : {};

    // 并行执行数据查询与总条数统计,提升效率
    Promise.all([
        ServiceQualityAnex.find(query)
            .sort({ _id: -1 })
            .select('-hash')
            .skip(skipCount)
            .limit(pageSize),
        ServiceQualityAnex.countDocuments(query)
    ])
    .then(([data, total]) => {
        res.json({
            data,
            pagination: {
                page,
                pageSize,
                total,
                totalPages: Math.ceil(total / pageSize)
            }
        });
    })
    .catch(err => {
        res.sendStatus(500); // 用500标识服务端内部错误更准确
        next(err);
    });
}

关键细节说明:

  • 分页参数处理:从req.query读取page和pageSize,转为数字并设置默认值,避免参数缺失引发异常。
  • 查询条件复用:抽离统一的查询条件,确保数据列表和总条数统计的查询范围一致。
  • 并行查询优化:通过Promise.all同时执行列表查询和条数统计,比串行执行减少请求耗时。
  • 返回结构优化:除数据列表外,返回分页核心信息(当前页、每页条数、总条数、总页数),方便前端快速实现分页交互。
  • 错误状态修正:原代码所有错误返回404,实际应区分场景——404用于资源不存在,服务端内部错误用500更合理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:01:41