Mongoose возвращает идентификатор вместо _id в методе заполнения

#node.js #mongodb #mongoose #mongoose-populate

#node.js #mongodb #mongoose #mongoose-заполнить

Вопрос:

У меня есть две связанные модели: Recipe и User .

Когда я извлекаю рецепт и связанного пользователя из базы данных с помощью populate() , я хочу, чтобы возвращаемый пользовательский объект имел id свойство вместо _id property.

 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 };
  

Комментарии:

1. Есть ли какая-то конкретная причина, по которой вы хотите id вместо _id ?

2. @Shadab В других частях моего приложения я мог использовать user id вместо _id , но в этом методе заполнения это не работает. Я хочу использовать id вместо _id для согласованности.

Ответ №1:

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

Это то, что я использую для удаления подчеркиваний — вы можете просто преобразовать документ и удалить ненужные фрагменты