猫鼬在填充方法中返回ID而不是_id

问题描述

我有两个相关的模型:RecipeUser

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

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

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

{
  id: 5eea82b11a97e9429ca61778,name: 'John Doe',email: '[email protected]'
}

我尝试将id属性添加用户对象,但没有任何改变。我仍然拥有_id属性

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

解决方法

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

这是我用来删除下划线的内容-您可以转换文档并删除不需要的位