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

如何在Mongoose服务端为字段设置别名后返回给客户端?

服务端转换Mongoose查询结果的驼峰字段为友好表头名

下面提供几种在Node.js服务端直接处理字段名转换的方案,无需修改数据库或前端代码:

方法1:使用Mongoose聚合查询重命名字段

通过聚合管道的$project操作,直接将数据库中的驼峰字段映射为带空格的友好名称,同时自动排除不需要的_id和__v字段:

exports.getEmployees = async (req, res) => {
  try {
    const employees = await Employee.aggregate([
      {
        $project: {
          _id: 0, // 排除_id字段
          "Account Number": "$accountNumber",
          "Employee Name": "$employeeName"
        }
      }
    ]);
    res.json(employees);
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
};

这种方式直接在数据库层面完成字段转换,性能较好,适合字段固定的场景。

方法2:查询后手动转换字段名

先通过find查询获取数据(用lean()返回普通JS对象,提升性能),再遍历数组转换每个对象的字段名:

exports.getEmployees = async (req, res) => {
  try {
    // 查询时排除__v和_id字段
    const employees = await Employee.find({}, { __v: 0, _id: 0 }).lean();
    
    // 手动映射字段名
    const formattedEmployees = employees.map(emp => ({
      "Account Number": emp.accountNumber,
      "Employee Name": emp.employeeName
    }));
    
    res.json(formattedEmployees);
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
};

如果后续需要新增字段,还可以写一个通用的驼峰转友好名称的工具函数,避免重复手动映射:

// 驼峰转空格分隔的首字母大写名称
function camelToFriendly(str) {
  return str.replace(/([A-Z])/g, ' $1').replace(/^./, char => char.toUpperCase());
}

// 动态转换所有字段
const formattedEmployees = employees.map(emp => {
  const result = {};
  Object.keys(emp).forEach(key => {
    result[camelToFriendly(key)] = emp[key];
  });
  return result;
});

这种方式灵活性更高,适合字段较多或需要动态处理的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:05:24