在Qoder中为Node.js项目快速搭建分页查询接口需安装qoder-paginator插件并注册,支持paginate()方法或手动传参,配合全局配置可设默认值、最大页大小及字段白名单校验。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Qoder中为Node.js项目快速搭建支持分页的数据库查询接口,需绕过手动拼接SQL OFFSET/LIMIT、避免内存溢出风险,并确保每页数据稳定返回。
安装并初始化Qoder分页插件
执行 npm install qoder-paginator 安装专用分页模块,该模块已适配Qoder v3.2+ 的中间件生命周期。
在 app.js 或 main.ts 中导入后调用 Qoder.use() 注册:Qoder.use(require('qoder-paginator'))。
这一步不可跳过,【未注册插件时调用 .paginate() 会直接抛出 ReferenceError】。
定义带分页能力的路由处理器
方法一:使用内置 paginate() 方法(推荐)
在控制器中编写:router.get('/users', async (ctx) => { const result = await User.find().paginate({ page: ctx.query.page || 1, pageSize: ctx.query.pageSize || 10 }); ctx.body = result; });
注意:page 和 pageSize 必须为数字类型,字符串如 '1' 会被自动转为 1,但 'abc' 会导致返回空数组且不报错。
方法二:手动传入 query 参数对象
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
const options = { page: parseInt(ctx.query.page), pageSize: parseInt(ctx.query.pageSize), sort: { createdAt: -1 } }; const data = await Post.paginate({}, options);
这里 sort 字段决定每页内排序逻辑,缺失时默认按 _id 升序——若业务要求最新数据在前,必须显式设置 -1。
配置全局分页默认值与校验规则
第一步:在 config/pagination.js 中导出配置对象
module.exports = { defaultPage: 1, defaultPageSize: 20, maxPageSize: 100, whitelist: ['title', 'status', 'category'] };
第二步:在启动文件中加载该配置:Qoder.set('pagination', require('./config/pagination'));
第三步:启用字段白名单校验——当请求中出现不在 whitelist 的查询字段(例如 ?author=xxx),接口将自动忽略该参数,【不会报错也不会透传给数据库】。
这能防止恶意构造 ?__proto__=xxx 类型攻击参数穿透到 mongoose 查询层。














