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

MongoDB如何查询指定集合的所有数据并在API接口中正确返回

问题原因
  • MongoDB的find()方法返回的是游标(Cursor)对象,而非直接的查询结果,你当前返回的就是游标本身的内部结构,因此会出现_events、_eventsCount这类字段
  • async函数下没有对数据库异步操作加await关键字,操作未执行完成就直接返回了结果
修复代码
exports.objfields = async (req, res, next) => {
  try {
    var db = mongo.connection;  
    var objeto = req.headers.objeto;
    // 增加await等待查询完成,调用toArray()将游标转为实际的文档数组
    const result = await db.db.collection(objeto).find({}).toArray();
    return res.status(200).send({message:result});
  } catch (error) {
    // 原状态码401代表授权失败,不符合当前错误场景,调整为500服务端错误
    return res.status(500).send({ message: error.message });
  }
};
补充优化建议
  • 若仅需要获取集合的所有字段名,不需要返回全量文档,可以改用聚合操作或者distinct方法提取字段键,避免全表扫描影响性能
  • 集合名建议放在请求路径参数或者请求体中传递,比放在请求头更符合REST接口设计规范
  • 建议增加参数校验逻辑,判断objeto是否为空、是否为合法集合名,避免异常输入触发报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:45:04