首页 > 解决方案 > Mongoose 在填充方法中返回 id 而不是 _id

问题描述

我有两个相关的模型:RecipeUser.

当我使用从数据库中获取配方和相关用户时populate(),我希望返回的用户对象具有id属性而不是_id属性。

const recipe = await Recipe.findOne({ _id }).populate('user', '-password');

当我记录用户模型的值时,我想得到这个:

{
  id: 5eea82b11a97e9429ca61778,
  name: 'John Doe',
  email: 'johndoe@gmail.com'
}

我尝试将id属性添加到用户对象,它没有改变任何东西。我仍然得到了_id财产。

recipe.user = { ...recipe.user, id: recipe.user_id };

标签: node.jsmongodbmongoosemongoose-populate

解决方案


    noteSchema.set('toJSON', {
  transform: (document, returnedObject) => {
    returnedObject.id = returnedObject._id.toString()
    delete returnedObject._id
    delete returnedObject.__v
  }
})

这就是我用来删除下划线的方法 - 您可以转换文档并删除您不想要的位


推荐阅读