当我使用 mongoose 在 MongoDB 中查询后打印返回的对象时,我得到一个包含键之一作为“_id”的对象。但是,当我尝试通过访问对象来打印对象的属性 id 和 _id 时,它不会说 id 未定义,而是打印与 _id 相同的 id。我附上下面的代码和输出的屏幕截图。这是代码片段const user = await User.findById(req.params.id);console.log(user);console.log(user.id, user._id);在下面的输出中,我们可以看到 id 和 _id 包含相同的值,即使用户对象中没有可用的“id”属性{ role: 'user', _id: 5fc6cad25884d51790aad697, name: 'Test 001', email: 'test001@gmail.com', __v: 0}5fc6cad25884d51790aad697 5fc6cad25884d51790aad697
2 回答
陪伴而非守候
TA贡献1757条经验 获得超8个赞
我想你最困惑的部分是id
它来自哪里。这是文档中的解释:
Mongoose 默认为每个模式分配一个 id 虚拟 getter,它返回文档的 _id 字段转换为字符串,或者在 ObjectIds 的情况下,返回其十六进制字符串。如果您不希望将 id getter 添加到您的架构中,您可以通过在架构构建时传递此选项来禁用它。
const schema = new Schema({ name: String }, { id: false });
虚拟属性是您可以获取和设置但不会持久保存到 MongoDB 的文档属性。getter 对于格式化或组合字段很有用,而 setter 对于将单个值分解为多个值进行存储非常有用。
添加回答
举报
0/150
提交
取消