如何从MongoDB中查询当前登录用户自己发布的JSON数据
正确实现逻辑
原有代码的问题
- 未添加
auth中间件:GET接口没有引入和POST接口一致的JWT校验中间件,无法获取到登录用户信息,req.user会返回undefined - 查询方法误用:
findById的作用是匹配Property数据自身的_id主键,不能用来筛选关联的用户ID,且你需要拉取的是当前用户的所有Property列表,应该使用find方法 - 查询条件错误:没有指定正确的过滤规则匹配Property中存储的关联用户ID
- 错误处理缺失响应:捕获异常后仅打印日志,没有返回对应的错误响应给调用方
修正后的完整代码
// 拉取当前登录用户创建的所有Property数据 router.get('/', auth, async (req, res) => { try { // 过滤条件:Property关联的user._id等于当前登录用户ID const properties = await Property.find({ 'user._id': req.user._id }); res.send(properties); } catch (ex) { console.error(ex.message); // 返回500错误响应 res.status(500).send('服务器内部错误,查询Property列表失败'); } });
代码说明
- 接口路径前添加了
auth中间件,和POST逻辑保持一致,JWT校验通过后才会执行后续逻辑,同时req.user会被赋值为当前登录用户的信息 - 使用
find方法查询所有满足条件的Property数据,过滤规则为'user._id'等于当前登录用户的ID,匹配POST接口存储的关联用户字段结构 - 异常捕获逻辑中新增了500错误响应,方便前端感知接口报错
内容的提问来源于stack exchange,提问作者Umair Assad
相关产品推荐
相关产品推荐

