A
A
Alexander Sadov2019-11-01 14:36:45
MongoDB
Alexander Sadov, 2019-11-01 14:36:45

How to properly update an object in a model via mongoose?

Hello. In the code, I painted the whole problem that needs to be solved.

// Модель пользователя
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
      } 
    */
}

How to do it? Write please :)

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Adventure2068, 2019-11-01
@Adventure2068

Just use the statement $set
modelUser.findByIdAndUpdate(id, {$set: doc}, {new: true})

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question