如何查询关联指定用户的Product数据?获取用户专属产品列表
解决方案
要实现只返回指定用户创建的产品,核心是给Product.find()添加用户ID匹配的查询条件,具体分两种常见场景处理:
场景1:通过认证中间件获取当前登录用户ID(比如JWT、Session)
如果你的项目已经实现用户认证(比如JWT解析后把用户信息挂载到req.user),直接用req.user._id作为查询条件:
router.get('/customerproduct', async (req, res) => { try { // 只查询当前登录用户的产品 const posts = await Product.find({ user_id: req.user._id }) .populate("user_id"); res.status(200).json(posts); } catch (error) { res.status(404).json({ message: error.message }); } });
场景2:通过URL参数传递目标用户ID
如果需要查询任意指定用户的产品(比如管理员查看其他用户的产品),可以把用户ID放在URL参数里:
第一步:修改路由,添加userId参数
// 路由改为带userId参数的形式 router.get('/customerproduct/:userId', async (req, res) => { try { const { userId } = req.params; // 匹配传入的用户ID对应的产品 const posts = await Product.find({ user_id: userId }) .populate("user_id"); res.status(200).json(posts); } catch (error) { res.status(404).json({ message: error.message }); } });
第二步:调用示例
前端请求时带上用户ID,比如:GET /customerproduct/60d21b4667d0d8992e610c85
关键说明
Product.find({ user_id: 目标ID }):MongoDB的查询语法,通过user_id字段匹配,只返回该用户创建的产品populate("user_id"):保持原有的关联用户信息查询逻辑,不会影响过滤效果
内容的提问来源于stack exchange,提问作者Zurcemozz
相关产品推荐
相关产品推荐

