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

如何修复Mongoose排序函数?查询带排序时数据为空问题

问题解决办法

你的核心问题出在高级过滤阶段误用了原始的req.query,而非处理后的queryObj。

看这段代码:

//2) Advanced Filtering
let queryStr = JSON.stringify(req.query); // 这里用了未处理的req.query,包含sort/limit等非查询字段
queryStr = queryStr.replace(/\b(gt|gte|lt|lte)\b/g, (match) => `$${match}`);

你之前已经把sort、limit这类非查询字段从queryObj中删除了,但高级过滤时却用了原始的req.query,导致这些参数被当成数据库查询条件,自然匹配不到任何数据。

修复代码

把高级过滤的第一行改成使用处理后的queryObj:

//2) Advanced Filtering
let queryStr = JSON.stringify(queryObj); // 替换为处理后的queryObj
queryStr = queryStr.replace(/\b(gt|gte|lt|lte)\b/g, (match) => `$${match}`);

额外验证点

  • 确认MongoDB中的文档确实存在price字段,且类型为数字(不是字符串),否则排序逻辑会异常。
  • 测试排序参数:请求?sort=price是升序,?sort=-price是降序,确保参数格式符合Mongoose的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:05:02