使用mongodb aggregation后如何在返回前格式化JSON的name字段为首字母大写
解决方法
你只需要在res.send(result)之前遍历聚合返回的结果数组,对每一项的name字段调用你实现的titleCase工具函数处理即可,修改后的代码如下:
], function (err, result) { if (err) { logger.error(req.method + ": " + req.originalUrl + ", message: " + err.message) next(createError.InternalServerError()) } // 新增name字段格式化逻辑 if (Array.isArray(result)) { result.forEach(item => { // 只对存在name字段的项做处理,避免异常报错 if (item?.name) { item.name = titleCase(item.name) } }) } res.send(result); //该行为数据返回代码 });
如果不想修改原聚合返回的结果对象,可以用map生成新数组返回:
const formattedResult = Array.isArray(result) ? result.map(item => { if (!item?.name) return item return { ...item, name: titleCase(item.name) } }) : result res.send(formattedResult)
补充说明
- 代码中增加了数组类型判断和name字段存在性判断,避免数据格式异常时出现运行错误
- 如果你希望直接在MongoDB聚合阶段完成首字母大写处理,也可以用
$toUpper、$substrCP等聚合运算符实现,但上述在业务层处理的方式更灵活,也能直接复用你已经写好的工具函数
内容的提问来源于stack exchange,提问作者ASHafizullah
相关产品推荐
相关产品推荐

