Alexsandrrh
@Alexsandrrh
Мне тут интересно.

Как правильно обновить объект в модели через mongoose?

Привет. В коде я расписал всю проблему которую нужно решить.
// Модель пользователя
const user = new Schema({
   name: {
       familyName: String,
       givenName: String,
       middleName: String
   },
   age: Number
});

const modelUser = mongoose.model("User", User);

// Создание нового пользователя
const newUser = new modelUser({
   name: {
       familyName: "Фамилия",
       givenName: "Имя",
       middleName: "Отчество"
   },
   age: 25
})

// Сохраняем нового пользователя
newUser.save();

// Изменим имя пользователя
const doc = {
   name: {
      givenName: "Новое имя пользователя"
   }
}

modelUser.findByIdAndUpdate(newUser.id, doc, { new: true}, (err, doc) => {
   if (err) return err;

   console.log(doc) 

   // Когда мы изменяем,то получается вот это. Мне так ненужно
   /* {
          name: {
             givenName: "Новое имя пользователя"
          },
          age: 25
      } 
    */
    
   // Нужно чтобы было так
    /* {
          name: {
             familyName: "Фамилия",
             givenName: "Новое имя пользователя",
             middleName: "Отчество"
          },
          age: 25
      } 
    */
}

Как это сделать? Напишите пожалуйста :)
  • Вопрос задан
  • 190 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Adventure2068
Просто используйте оператор $set
modelUser.findByIdAndUpdate(id, {$set: doc}, {new: true})
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы