You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取已登录用户的MongoDB _id?解决req.user.id返回undefined问题

解决req.user.id返回undefined的问题

你遇到的问题核心很简单:MongoDB默认生成的用户主键字段是_id,而非id,req.user对象里根本不存在id这个属性,所以调用req.user.id自然会返回undefined。

给你两个实用的解决办法:

  • 直接使用req.user._id获取用户ID,这是最直接的方案,毕竟你已经能通过req.user看到这个字段。
  • 如果你习惯用id来访问,可以在用户的Mongoose模型里配置虚拟属性,让_id自动映射为id:
// 在User模型定义中添加配置
const userSchema = new mongoose.Schema({
  // 你的用户字段定义
});

// 定义虚拟属性id,映射到_id的字符串形式
userSchema.virtual('id').get(function() {
  return this._id.toHexString();
});

// 确保虚拟属性在转JSON时被包含
userSchema.set('toJSON', {
  virtuals: true,
  versionKey: false,
  transform: function(doc, ret) { delete ret._id; } // 可选:移除原始的_id字段,让返回结构更简洁
});

配置完成后,再访问req.user.id就能拿到用户ID的字符串形式了,不管用哪种方式,只要能正确定位到用户文档,就能把新提交的字符串存储到对应用户的数据集合里。

内容的提问来源于stack exchange,提问作者Rahul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:15:18