You need to enable JavaScript to run this app. Mongoose实现Post查询按createdAt字段排序的正确方法
优惠活动
大模型
产品
解决方案
定价
更多

Mongoose实现Post查询按createdAt字段排序的正确方法

现有代码核心问题
  • 排序方向参数配置错误:Mongoose 查询的 sort 方法中,方向值为1时代表升序排序,对时间字段而言就是从最早创建的文档排到最新创建的文档,和当前接口返回的顺序完全一致,不符合前端最新内容优先展示的预期。
  • 字段引用语法不规范:代码中直接写裸标识符createdAt,没有作为字符串传入排序配置,在当前执行上下文会触发未定义变量报错,无法正确匹配集合中的时间字段。
修正后的接口实现

调整排序逻辑为按createdAt字段降序排列,保证最新创建的帖子在返回列表的最前端,匹配前端渲染顺序要求:

const getPosts = asyncHandler(async (req, res) => {
  const posts = await Post.find().sort({ createdAt: -1 });
  res.json(posts);
});
语法说明
  • 排序配置中-1代表降序规则:时间戳值越大(创建时间越晚)的文档,在返回列表中的排序优先级越高、位置越靠前。
  • 若后续需要支持多字段组合排序,可使用数组形式的排序写法.sort([['createdAt', -1], ['viewCount', -1]]),和对象写法效果完全一致,日常单字段排序优先推荐可读性更高的对象配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 23:36:04