如何在MongoDB中实现动态查询指定分类商品或全量商品数据?
问题原因
你当前的写法是将空字符串作为category的固定查询条件,MongoDB执行查询时会严格匹配category字段值等于空字符串的文档,而非忽略该条件返回所有商品,因此没有符合条件的结果时就会返回空数组。
解决方案
你可以动态构造查询条件对象:有合法cat参数时带上分类过滤条件,没有参数时传入空查询对象,就可以实现查询全部分类的需求。
示例代码如下:
// 构造动态查询过滤器 const filter = {} // 只有请求体中cat参数存在且不为空值时,才添加分类过滤条件 if (req.body.cat && req.body.cat.trim()) { filter.category = req.body.cat.trim() } let products; try { products = await Product.find(filter); } catch (e) { return next(e); }
如果不需要做额外的空值校验,也可以简化为一行写法:
const filter = req.body.cat ? { category: req.body.cat } : {}
内容的提问来源于stack exchange,提问作者Mehdi Faraji
相关产品推荐
相关产品推荐

