如何实现按关联item编号筛选返回对应评论的后端GET请求
问题修复方案
核心问题梳理
- 报错原因:你的代码中调用了
response.json(),但路由回调函数的入参定义为res,response属于未定义变量,直接触发类型错误。 - 筛选功能失效原因:
Review.find({})没有传入筛选条件,且路由参数未和item字段做关联匹配。 - 关联查询配置错误:Review Schema中用户关联字段为
author,你写的populate配置中path字段填的user和实际字段不匹配,会导致关联查询失效。
修正后代码
router.get("/:itemId", async (req, res) => { try { // 路由参数默认是字符串,转为Number和Schema中item的类型匹配 const targetItem = Number(req.params.itemId) const reviews = await Review.find({ item: targetItem }) // 关联查询作者用户名,对应Schema的author字段 .populate("author", "username") res.json(reviews.map(review => review.toJSON())) } catch (err) { // 增加错误处理,避免服务端无响应 res.status(500).json({ error: err.message }) } })
调用说明
你只需要发送GET请求到/{路由前缀}/168,即可返回所有item=168的评论,自动过滤其他item值的内容。
内容的提问来源于stack exchange,提问作者ArcRiseGen
相关产品推荐
相关产品推荐

