如何简化Express路由中重复的查询参数处理代码?
简化Express路由中的重复查询参数处理逻辑
你可以通过定义参数映射关系的方式消除重复代码,核心思路是把查询参数名和对应的数据库字段名做映射,再通过循环统一处理:
router.get('/reports', async (req, res) => { // 定义查询参数与数据库字段的映射关系 const paramMap = { y: 'end_year', t: 'topic', s: 'sector', r: 'region', src: 'source' }; const filters = {}; // 循环处理每个映射项 Object.entries(paramMap).forEach(([queryKey, dbField]) => { if (req.query[queryKey]) { filters[dbField] = req.query[queryKey].split(','); } }); const reports = await Report.find(filters); });
后续如果需要新增或调整查询参数,只需要在paramMap里添加/修改对应关系即可,不用重复编写相似的if判断逻辑,代码更简洁也更易维护。
内容的提问来源于stack exchange,提问作者Rohan Hari
相关产品推荐
相关产品推荐

