#node.js #reactjs #mongodb #express #postman
#node.js #reactjs #mongodb #выражать #почтальон
Вопрос:
В MongoDB Моя структура базы данных выглядит следующим образом,
[{
"_id": "",
"courseTitle": "",
"courseImage": "",
"group": [
{
"_id": "",
"title": "",
"overView": "",
"duration": "",
"syllabus": []
}
],
}]
На моем узловом js-сервере я пытаюсь обновить свою запись, используя метод put, вот мой маршрут
router.put("/:id/:gid", (req, res) => {
let updateRecord = {
title: req.body.title,
duration: req.body.duration,
overView: req.body.overView,
syllabus: req.body.syllabus,
};
Я использую findOne для обновления своей записи,
GroupCourse.findOne({ "group._id": req.params.gid }, function (error, data) {
if (error) {
console.log(error);
res.status(500).send();
} else {
if (!data) {
console.log("404");
res.status(404).send();
} else {
if (data) {
data = updateRecord;
console.log("This is updated data", data)
}
Если я console.log(данные), в данных отображаются обновленные значения.
Когда я попытался сохранить данные с помощью приведенного ниже кода, он выдает ошибку..
data.save(function (error, updatedData) {
if (!error) {
console.log("This is Updated", updatedData);
res.send(updatedData);
}
else {
console.log(error);
res.status(500).send();
}
});
}
}
});
});
Я использую NodeJS, MongoDB и Postman для отправки данных отправки
Ответ №1:
Вариант 1
GroupCourse.update({'_id': req.params.id,'group._id': req.params.gid},
{'$set': {
'group.$.title': updateRecord.title,
'group.$.duration': updateRecord.duration
}}, function(err,response) {
// check error and response
}
вариант 2
GroupCourse.findOne({'_id': req.params.id}).then(doc => {
// can update parent
// item.courseTitle= 'javascript'
item = doc.group.id(req.params.gid );
item["title"] = updateRecord.title;
item["duration"] = updateRecord.duration;
doc.save();
//sent response to client
}).catch(err => {
// error
});