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

如何用Express.js获取MongoDB总记录数?我的代码返回空对象

问题原因及解决方法

你的代码存在两个核心问题:

  1. 错误发送Promise对象而非实际计数结果
    Center.countDocuments()返回的是一个Promise实例,你将其赋值给result后,在then回调里直接发送result(即Promise对象),Express序列化Promise对象后会返回空对象{}。
  2. 错误处理的状态码不符合规范
    数据库查询出错时应返回4xx/5xx类错误状态码,而非200(成功状态)。

修正后的代码(推荐async/await写法,逻辑更清晰)

const getCountofCenters = async (req, res) => {
  try {
    // await直接获取countDocuments返回的实际计数
    const count = await Center.countDocuments();
    res.status(200).json({ count }); // 返回结构化JSON数据,方便前端解析
  } catch (err) {
    res.status(500).json({ error: err.message }); // 返回500错误及具体信息
  }
};

若偏好then/catch写法,修正如下:

const getCountofCenters = (req, res) => {
  Center.countDocuments()
    .then(count => res.status(200).json({ count })) // 接收Promise resolve的计数结果并返回
    .catch(err => res.status(500).json({ error: err.message }));
};

补充说明

  • 使用res.json()替代res.send(),可确保返回标准JSON格式数据,降低前端解析难度。
  • 遵循RESTful规范,在错误场景返回对应HTTP状态码,便于调用方识别请求状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:25:19