Mongoose – Совпадающий документ не найден (ForEach)

Я новичок в NodeJS и Mongoose, и это может быть дублированный вопрос, поэтому не отвечайте отрицательно, пожалуйста. Я попытался найти решение, но не смог исправить эту ошибку.

В основном, я получаю эту ошибку при попытке обновить значения базы данных. Первое обновление, которое я выполняю, отлично работает, но со второго, я получаю эту ошибку. Значения обновляются, но он обновляет сразу несколько полей, давая эту ошибку.

Вот мой код: (и я добавил ссылку на github для проекта):

User.js (модель)

local: { ..., education: [{ id: String, degree: String, institute: String, dates: String, description: String }], ... } 

router.js

 app.put('/put_education/:id', function(req, res) { var row_id = req.params.id; //get education id from table row //get the current logged in user User.findById(req.user._id, function (err, doc) { if (err) { console.log('no entry found'); } //match the table row id with the id in users education model doc.local.education.forEach(function (education, index) { console.log(education.id + " " + row_id); //if rows match, replace the database document with values from client if(education.id === row_id){ doc.local.education[index] = req.body; doc.save(function (err) { if (err) { console.log(err); } else { res.send("Success"); } }); } }); }); }); 

Я добавил console.log, чтобы увидеть, что цикл работает, изображение ниже показывает, что оно отлично подходит для первой итерации, но действует странно для следующих: введите описание изображения здесь

Я думал о разрыве цикла после совпадения id, но цикл foreach не имеет функции break, я изменил его на обычный цикл, но он все равно дает мне ту же ошибку. Поэтому я не думаю, что разрыв цикла – это ответ.

Изменить: добавлено изображение моего сайта, чтобы показать, что происходит после обновления (дублирует строки) введите описание изображения здесь

Github: https://github.coventry.ac.uk/salmanfazal01/304CEM-Back-End

если выход из итерации – это ваша проблема, то почему бы не использовать простой цикл for с инструкцией break.

 let eduArray = doc.local.education; for(i=0;i 

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

doc.local.education [index] = req.body;

здесь я вижу, что вы назначаете все, что находится внутри тела запроса, на образование, но вы проверили, какие данные действительно находятся внутри req.body?

попробуйте зарегистрировать req.body, чтобы узнать, что вы на самом деле присваиваете образованию.